Entfernen der letzten leeren Zeile
Es ist ein para-Pause am Ende meiner .csv-Datei. Ich versuchte, entfernen Sie die leere Zeile am Ende der Datei mithilfe des folgenden Befehls.
sed -i '/^$/d' combined.csv
Aber es funktioniert nicht, und eine leere Zeile ist immer noch da. Ich kann entfernen Sie die Letzte Zeile mit dem folgenden Befehl.
sed -i '$d' combined.csv
Aber ist es möglich zu überprüfen, ob die Letzte Zeile ist wirklich leer, bevor es zu entfernen?
Update:
Ich bin mit dem folgenden Befehl überprüfen Sie, ob jede Zeile mit einer Zahl beginnen.
sed -i '1s/^[^0-9]*//' combined.csv
Diese Prüfungen nur für die erste Zeile und nicht der rest der Linien. Wie kann ich es überprüfen Sie alle Zeilen in der Datei? Das könnte mein problem lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
${/^$/d;}
dieses passt nur eine leere Zeile, wenn es die Letzte Zeile der Datei.Update: Ihre zweite Frage, entfernen Sie einfach die 1 vor dem s, also:
sed -i 's/^[^0-9]*//' combined.csv
${/^$/d;}
: Die erste$
bedeutet die Letzte Zeile der Datei (Sie können festlegen, dass ein Befehl eine Zeilennummer und $ bedeutet, Letzte Zeile). Die geschweiften Klammern bedeuten, ein block, und innerhalb des Blocks, den Sie löschen/d;
eine leere Zeile/^$
.Fand diese vor Jahren irgendwo gespeichert und das snippet. Fragen Sie mich nicht, wie es funktioniert:
perl -pe 'chomp if eof && /^$/' combined.csv
Entfernen Sie leere Zeilen, die Sie verwenden können
grep .
odersed '/^$/d'
Wird es zu entfernen, eine leere Zeile in der Datei. Ich hoffe, dass Sie die Datei keine leeren Zeilen in der Mitte, aber das funktioniert in deinem Fall.
cat combined.csv | grep .
oder
cat combined.csv | sed '/^$/d'
Versuchte ich es mit sed (GNU sed) 4.2.2 und habe alle Leerzeilen gelöscht, nicht nur die leere Zeile, wenn es die Letzte Zeile der Datei.
Fand ich den folgenden Befehl ein, das funktionierte für mich, dass der Job nicht.
Dieser Befehl ist aus einer Sammlung von nützlichen SED-Oneliners:
http://sed.sourceforge.net/sed1line.txt
$ {/^$/d;}
sollte gut funktionieren, mit allen POSIX-kompatiblensed
. Versuchensed '$ {/^$/d;}' <<<$'a\n\nb\n'
und du wirst sehen, dass nur die Letzte Zeile ist entfernt.