GNU/Linux >> Znalost Linux >  >> Linux

Nahradit data mezi citacemi v souboru?

Chci extrahovat data mezi „ “ z datového souboru s oddělovačem jako čárkou.

Ukázkový vstupní soubor:

,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10,000",8/13/2019,

Očekávané o/p:

,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10000",8/13/2019,

Přijatá odpověď:

Za předpokladu, že se jedná o správně naformátovaný CSV (ukázková data vypadají v tomto ohledu dobře), můžeme použít csvformat z csvkit dočasně změnit oddělovače polí na jiný znak, který se jinak v datech nevyskytuje, například @ , odstraňte všechny čárky a znovu změňte oddělovač pole zpět na výchozí:

$ csvformat -D '@' file.csv | tr -d , | csvformat -d '@'
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,10000,8/13/2019,

Výstup nemá uvozovky kolem pole, které jsme upravili, ale to proto, že už to nepotřebuje.

Je zřejmé, že „smazání všech čárek“ může smazat čárky, které ve skutečnosti smazat nechceme, takže můžeme být trochu selektivnější a smazat pouze čárky v 7. poli:

$ csvformat -D '@' file.csv | awk -F '@' 'BEGIN { OFS=FS } { gsub(",", "", $7); print }' | csvformat -d '@'
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,10000,8/13/2019,

Linux
  1. Nahradit nový řádek nulou?

  2. Jak obnovit data Xfs po Rm?

  3. Odstranit čárku mezi uvozovkami pouze v souboru odděleném čárkou?

  1. Skrytí dat v souborových systémech?

  2. Protokolování dat VMStat do souboru

  3. Najděte a nahraďte text v souboru mezi rozsahy řádků pomocí sed

  1. Protokoly přenosu souborů:FTP vs SFTP

  2. Jak nahradit řetězec v souboru (souborech)?

  3. Použití sed k nahrazení mezi konkrétním vzorem