
Ich habe eine CSV-Datei mit mehreren Datenzeilen. Ich muss in der Zeichenfolge/dem Datensatz nach einem bestimmten Wert suchen und diese Zeile selbst löschen.
Zum Beispiel:
abc.csv
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000542,eeee,ffff,gggg,hhhh
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
Ich muss nach 1000542 suchen und die gesamte Zeile entfernen, die diese Nummer enthält:
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
Antwort1
sed
Sie können zum Entfernen einer Zeile Folgendes verwenden :
sed -i '/1000542/d' abc.cvs
wobei d
die Zeile entfernt wird, -i
angibt sed
, dass mit der Datei gearbeitet werden soll, anstatt nur den geänderten Text auszugeben, 1000542
das Muster ist, nach dem Sie suchen möchten, und abc.cvs
der Dateiname ist.
Antwort2
Sie könnten auch awk verwenden,
awk '/1000542/ {next}1' infile > outfile
Beispiel:
$ awk '/1000542/ {next}1' file
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
Es überspringt die Zeile, die 1000542
den Druck enthält.