GNU/Linux >> Belajar Linux >  >> Linux

Filter file .CSV berdasarkan nilai kolom ke-5 file dan cetak catatan tersebut ke dalam file baru

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

Keluaran

"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",""

Saya pikir Inilah yang Anda inginkan.


Masalah dengan CSV adalah tidak ada standar. Jika Anda harus sering berurusan dengan data berformat CSV, Anda mungkin ingin mencari metode yang lebih kuat daripada hanya menggunakan "," sebagai pemisah bidang Anda. Dalam hal ini, Text::CSV Perl Modul CPAN sangat cocok untuk pekerjaan:

$ 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. Cetak Garis Pencocokan Dan Garis Ke-N Dari Garis Yang Cocok?

  2. Perbedaan Antara .exrc Dan .vimrc?

  3. Cetak Konten File Tanpa Baris Pertama Dan Terakhir?

  1. Bagaimana Menemukan Jenis File Img Dan Memasangnya?

  2. Hapus Baris Berturut-turut Dalam Csv Dengan Nilai Duplikat Dalam Satu Bidang, Tapi Pertahankan Baris Terakhir?

  3. Menggunakan awk untuk menjumlahkan nilai kolom, berdasarkan nilai kolom lain

  1. Output Ke Stdout Dan Pada Saat Yang Sama Grep Ke File?

  2. Perbedaan Antara Tautan Simbolik dan Tautan Keras?

  3. Cara mengekstrak nilai (dalam baris dan kolom tertentu) dari file dan menugaskannya ke variabel baru