GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Daten zwischen Anführungszeichen in einer Datei ersetzen?

Ich möchte Daten zwischen „ “ aus einer Datendatei mit Trennzeichen als Komma extrahieren.

Beispiel-Eingabedatei:

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

Erwartet o/p:

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

Akzeptierte Antwort:

Unter der Annahme, dass es sich um richtig formatierte CSV-Dateien handelt (die Beispieldaten sehen in dieser Hinsicht in Ordnung aus), können wir csvformat verwenden aus csvkit um die Feldbegrenzer vorübergehend in ein anderes Zeichen zu ändern, das ansonsten nicht in den Daten vorhanden ist, wie z. B. @ , löschen Sie alle Kommas und setzen Sie das Feldtrennzeichen wieder auf den Standard zurück:

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

Die Ausgabe enthält keine Anführungszeichen um das Feld, das wir geändert haben, aber das liegt daran, dass es nicht mehr benötigt wird.

Offensichtlich kann das „Löschen aller Kommas“ Kommas löschen, die wir eigentlich nicht löschen wollen, also können wir etwas selektiver sein und nur die Kommas im 7. Feld löschen:

$ 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. Suche nach eindeutigen Werten in einer Datendatei

  2. Protokollieren von VMStat-Daten in einer Datei

  3. Wie funktioniert Rm? Was macht Rm?

  4. Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

  5. Unterschied zwischen Gerätedatei und Gerätetreibern

Daten in Dateisystemen verstecken?

Ext4-Datenwiederherstellung?

Wie teilt man Dateien zwischen Ubuntu und Windows 10?

So löschen Sie eine AWStats-Datendatei

Kopieren Sie n Datenbytes x in die Datei

MySQL-Daten können nicht in Datei ausgegeben werden