web-dev-qa-db-ja.com

CSVファイルから各行の最初の列を取得する方法は?

入力CSVファイルのすべての行の最初の列を取得して新しいファイルに出力するにはどうすればよいですか?私はawkを使用することを考えていますが、方法はわかりません。

31
Junba Tester

これを試して:

 awk -F"," '{print $1}' data.txt

ファイルの各入力行data.txt,文字(-Fで指定)に基づいて異なるフィールドに分割し、最初のフィールド(列)をstdoutに出力します。

61
Levon

できること:

$ cut -d, -f1 data.txt
55
user647772
echo "a,b,c" | cut -d',' -f1 > newFile
9
Nykakin

入力

a,12,34
b,23,56

コード

awk -F "," '{print $1}' Input

形式

awk -F <delimiter> '{print $<column_number>}' Input
7
Debaditya

これは、grepを使用して実現できます。

$ grep -o '^[^,]\+' file.csv
3
kenorb

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

0
Chris Koknat