GNU/Linux >> Znalost Linux >  >> Linux

Filtrujte soubor CSV na základě hodnot 5. sloupce souboru a vytiskněte tyto záznamy do nového souboru

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

Výstup

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

Myslím, že tohle je to, co chceš.


Problém CSV je v tom, že neexistuje žádný standard. Pokud potřebujete často pracovat s daty ve formátu CSV, možná budete chtít hledat robustnější metodu, než jen používat "," jako oddělovač polí. V tomto případě Perl's Text::CSV Moduly CPAN jsou pro tuto práci mimořádně vhodné:

$ 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. Tisknout odpovídající čáru a N-tou čáru ze shodné čáry?

  2. Rozdíl mezi symbolickými a pevnými odkazy?

  3. Vzít první sloupec ze 2 souborů a zapsat ho do třetího souboru?

  1. Io Redirection and the Head Command?

  2. Vytisknout obsah souboru bez prvního a posledního řádku?

  3. Smazat po sobě jdoucí řádky v CSV s duplicitními hodnotami v jednom poli, ale ponechat poslední řádek?

  1. Přidání sloupce hodnot v souboru odděleném tabulátory

  2. Jak extrahovat hodnotu (v konkrétním řádku a sloupci) ze souboru a přiřadit ji k nové proměnné

  3. Změňte pořadí řádků v souboru