Irgendwo in der Mitte meiner CSV-Datei befindet sich diese Zeile:
Products below this line are out of stockNumber, month, year, reference, store
Hinweis: Nummer, Monat, Jahr, Referenz und Speicher sind die CSV-Felder.
Wie lösche ich diese Zeile mit einem Befehlszeilenbefehl aus der Datei?
Beachten Sie, dass die CSV so ist
Number, month, year, reference, store
1,1,2014,13322,main
2,2,2014,13322,main
3,3,2011,1322,main
4,4,2012,3322,main
5,4,2013,122,secondary
Products below this line are out of stockNumber, month, year, reference, store
12,411,2010,122,Albany
25,41,2009,122,Dallas
35,24,2008,122,New
text-processing
DuckDucking
quelle
quelle
Antworten:
Der einfachste Weg ist die Verwendung des
grep -v
Befehls:grep -v "Products below" your_file.csv > new_file.csv
quelle
Mit Ihren Eingabedaten können Sie versuchen:
Verwenden Sie
sed -i.bak
, um die Datei an Ort und Stelle zu bearbeiten und eine Sicherungsdatei zu erstellen:quelle
sed
Ihnen müssen Sie nicht-i.bak
nur-i
tun (aber natürlich ohne Sicherungsdatei)-i''
für dass , obwohl-i''
der Shell sollte das ausziehen''
und dich in-i
Ruhe lassen. Zumindest wenn es sich um eine Standard-Bourne-ähnliche Hülle handelt.-i
und''
Wenn wir davon ausgehen können, dass Sie alle Zeilen löschen möchten, die mit beginnen
Products
(einschließlich des Leerzeichens nach dem ersten Wort), funktionieren alle:awk
perl
oder
oder, um die Datei an Ort und Stelle zu bearbeiten
grep (dies ist nur eine kürzere Version der Antwort von svq )
Bash (nur zum Spaß)
quelle
an Ort und Stelle mit
ed
(an derbash
Eingabeaufforderung)Oder wie Don Crissti empfiehlt:
quelle
ed
Antworten verdienen immer eine +1q
Unterbefehl uit hinzufügen :$'/Products below/d\nw\nq'
Sie können das
sed
Suchmuster verwenden, um jede Zeile zu löschen, die dieses Muster enthältquelle
Perl Oneliner:
quelle
Hier ist noch ein weiteres Beispiel für die Verwendung
sed
:quelle