GNU/Linux >> Linux Esercitazione >  >> Linux

Sostituire i dati tra le citazioni in un file?

Voglio estrarre i dati tra " " da un file di dati con delimitatore come virgola.

Esempio di file di input:

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

Previsto o/p:

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

Risposta accettata:

Supponendo che questo sia CSV formattato correttamente (i dati di esempio sembrano ok sotto questo aspetto), possiamo usare csvformat da csvkit per modificare temporaneamente i delimitatori di campo con qualche altro carattere non altrimenti presente nei dati, come ad esempio @ , elimina tutte le virgole e ripristina di nuovo il delimitatore di campo predefinito:

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

L'output non ha virgolette intorno al campo che abbiamo modificato, ma è perché non ne ha più bisogno.

Ovviamente, "cancellare tutte le virgole" potrebbe eliminare le virgole che in realtà non vogliamo eliminare, quindi possiamo essere un po' più selettivi ed eliminare solo le virgole nel 7° campo:

$ 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. Protocolli di trasferimento file:FTP vs SFTP

  2. Sostituire Newline con Nul?

  3. Rimuovere la virgola tra le virgolette solo in un file delimitato da virgole?

  4. Creare dati di lettura di testo da un file?

  5. Nascondere i dati nei filesystem?

Recupero dati Ext4?

Come condividere file tra Ubuntu e Windows 10?

Come eliminare un file di dati AWStats

Registrazione dei dati VMStat su file

Differenza tra file di dispositivo e driver di dispositivo

Utilizzo di sed per sostituire uno schema specifico