GNU/Linux >> Linux の 問題 >  >> Linux

ファイルの 5 番目の列の値に基づいて .CSV ファイルをフィルター処理し、それらのレコードを新しいファイルに出力します。

awk -F '","'  'BEGIN {OFS=","} { if (toupper($5) == "STRING 1")  print }' file1.csv > file2.csv 

出力

"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""

これがあなたの望むものだと思います。


CSV の問題点は、標準がないことです。 CSV 形式のデータを頻繁に処理する必要がある場合は、単に "," を使用するのではなく、より堅牢な方法を検討することをお勧めします。 フィールド区切りとして。この場合、Perl の Text::CSV CPAN モジュールは、この仕事に非常に適しています:

$ perl -mText::CSV_XS -WlanE '
    BEGIN {our $csv = Text::CSV_XS->new;} 
    $csv->parse($_); 
    my @fields = $csv->fields(); 
    print if $fields[4] =~ /string 1/i;
' file1.csv
"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""

Linux
  1. 一致する行と一致する行からN番目の行を印刷しますか?

  2. .exrcと.vimrcの違いは?

  3. 2つのファイルから最初の列を取得して3番目のファイルに書き込みますか?

  1. イオリダイレクションとヘッドコマンド?

  2. 最初と最後の行なしでファイルコンテンツを印刷しますか?

  3. ディレクトリ構造(ファイルシステム)の内容をコマンドラインでCsvに印刷しますか?

  1. Awkおよび正規表現を使用してファイル内のテキストまたは文字列をフィルタリングする方法

  2. Stdoutに出力し、同時にGrepをファイルに出力しますか?

  3. ファイルの 2 列目を出力する