入力CSVファイルのすべての行の最初の列を取得して新しいファイルに出力するにはどうすればよいですか?私はawk
を使用することを考えていますが、方法はわかりません。
これを試して:
awk -F"," '{print $1}' data.txt
ファイルの各入力行data.txt
を,
文字(-F
で指定)に基づいて異なるフィールドに分割し、最初のフィールド(列)をstdoutに出力します。
できること:
$ cut -d, -f1 data.txt
echo "a,b,c" | cut -d',' -f1 > newFile
入力
a,12,34
b,23,56
コード
awk -F "," '{print $1}' Input
形式
awk -F <delimiter> '{print $<column_number>}' Input
これは、grep
を使用して実現できます。
$ grep -o '^[^,]\+' file.csv
Perlの使用:
Perl -F, -lane 'print $F[0]' data.txt > data2.txt
これらのコマンドラインオプションが使用されます。
-n
入力ファイルのすべての行をループします-l
は、処理する前に改行を削除し、後でそれらを追加します-a
自動分割モード–入力行を@F
配列に分割します。デフォルトは空白での分割です。-e
Perlコードを実行します-F
autosplit修飾子、この場合は,
で分割元のファイルをインプレースで変更する場合は、-i
オプションを使用します。
Perl -i -lane 'print $F[0]' data.txt
元のファイルをインプレースで変更し、バックアップコピーを作成する場合:
Perl -i.bak -lane 'print $F[0]' data.txt
データがコンマ区切りではなく空白区切りの場合:
Perl -lane 'print $F[0]' data.txt