4 Stimmen

Einfaches Sed-Skript, das nur geänderte Zeilen anzeigt

Wie könnte ich ein separates sed-Skript (nennen wir es script.sed) erstellen, das nur die geänderten Zeilen anzeigt, ohne die -n-Option beim Ausführen verwenden zu müssen? (Entschuldigung für mein Englisch)

Ich habe eine Datei namens data2.txt mit Zahlen und muss die Zeilen ändern, die mit ".5" enden, und diese geänderten Zeilen in der Konsole ausgeben.

Ich weiß, wie es mit einem einzelnen Befehl geht (sed -n 's/.5$//gp' data2.txt), jedoch verlangt unser Universitätsprofessor, dass wir dasselbe mit dem Befehl sed -f script.sed data2.txt tun.

Irgendwelche Ideen?

6voto

Andrew Clark Punkte 193562

Das Folgende sollte für Ihr sed-Skript funktionieren:

s/.5$//gp
d

Die Option -n unterdrückt das automatische Drucken der Zeile, eine andere Möglichkeit dies zu tun ist die Verwendung des Befehls d. Aus der Manpage:

   d      Löscht das Muster im Speicher. Startet den nächsten Zyklus.

Dies funktioniert, weil das automatische Drucken der Zeile am Ende eines Zyklus passiert, und die Verwendung des Befehls d bedeutet, dass Sie niemals das Ende eines Zyklus erreichen, daher werden keine Zeilen automatisch gedruckt.

2voto

potong Punkte 51035

Dies könnte für Sie funktionieren (GNU sed):

#n
s/.5$//p

Speichern Sie dies in einer Datei und führen Sie es aus:

sed -f file.sed file.txt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X