Ich habe eine Datei, die die folgenden Zeilen enthält:
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Wie kann ich die Zeile „SUKsoft:“ entfernen?
Diese Zeile kann an einer beliebigen Stelle in der Datei stehen (am Anfang, wie sie jetzt ist, oder in der Mitte).
Gibt es einen Befehl, um dies zu tun?
Antwort1
Zuentfernendie Liniennutzung
sed -i '/SUKsoft:\s*$/d' your_file
Beispiel
% cat foo
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% sed -i '/SUKsoft:\s*$/d' foo
% cat foo
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Antwort2
So entfernen Sie die gewünschte Zeile:
$ sed 's/SUKsoft: *$//' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Ich gehe davon aus, dass es file.txt
die Zeilen enthält.
Oder,
$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
es hinterlässt keineleerLinie.
Zum Bearbeiten der Datei können Sie Folgendes verwenden:
sed -i 's/SUKsoft: *$//' file.txt
oder
sed -i 's/SUKsoft: *$//; /^$/d' file.txt
ganz nach Bedarf.
SehenAB's Antwort, wo es kompakter gemacht wird. Dank anWildcard.
Antwort3
grep
sucht nach Zeilen, die einem Muster entsprechen. grep -v
RückwürfeZeilen, die einem Muster entsprechen.
grep -v '^SUKsoft: *$'
Das Muster ist: Zeilen, die ^
mit () beginnen SUKsoft:
, möglicherweise gefolgt von Leerzeichen, aber sonst nichts bis zum Ende der Zeile ( $
).
Antwort4
Gemessen an Ihrerposte die RohquelleNach „SUKsoft:“ steht kein Leerzeichen bzw. keine Leerzeichenfolge. Sicherheitshalber wird dieser Befehl diese jedoch berücksichtigen, falls sie vorhanden sind.
Mit Perl:
perl -ne '!/^SUKsoft: *$/&&print' input
!/^SUKsoft:$/&&print
: Wenn die aktuelle Zeile nicht mit dem Muster übereinstimmt^SUKsoft: *$
, das mit einer Zeile übereinstimmt, die mit einerSUKsoft:
Zeichenfolge beginnt, gefolgt von null oder mehr Leerzeichen, wird die Zeile gedruckt;
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW