Wie schreibe ich ein Shell-Skript, das zählt und ausgibt, wie viele Änderungen bei der Ausführung eines SED-Befehls vorgenommen wurden?
Beispiel: Verwenden Sie den Befehl SED, um jede Zeile zu löschen, wenn sie einem bestimmten Zeichen entspricht.
sed '/@gmail.com/d' F1.txt > RESULT.txt
F1.txt-Datei enthält:
abc123@gmail.com
zyz123@gmail.com
fgh456@yahoo.com
ght4789@msn.com
Die Ausgabe dieser Datei wäre:
fgh456@yahoo.com
ght4789@msn.com
Daher wurden zwei Zeilen abgeglichen und die beiden Zeilen gelöscht.
Nun, wie kann man dies in einem Shell-Skript mit einem Echo wiedergeben und vorschlagen, wie viele Zeilen durch diesen SED-Befehl geändert / gelöscht wurden?
Es sollte klingen und Print / Echo, 2 Zeilen wurden gelöscht. Können Sie bitte helfen, wie man dieses Shell-Skript erstellt?
#!/bin/bash
sed '/@gmail.com/d' F1.txt > RESULT.txt
wc -l
für beide Dateien verwenden und die Differenz berechnen.$(wc -l <FileName)
, um jede Zeilenzahl und$((ArithmeticExpression))
die Differenz zurückzugeben.$(( ... ))
im Handbuch nachgeschlagen? Was hast du nicht verstandenAntworten:
Wenn Sie mit zwei Befehlen zufrieden sind, können Sie Folgendes tun:
Wenn Sie es als schnelles und unsauberes
bash
Skript schreiben möchten , können Sie es auch so machen:quelle
-z
ist wahr, wenn die Variable leer ist. Der-r
Ausdruck ist wahr, wenn die Datei vorhanden und lesbar ist. Wenn Sie die gesamte Liste der bedingten Ausdrücke anzeigen möchten, führen Sie einfach den Befehl ausman bash
und suchen Sie nachCONDITIONAL EXPRESSIONS
. PS Schonende Erinnerung - Sie sollten in Betracht ziehen, eine der Antworten auf Ihre Frage als richtig zu markieren. Es belohnt die Person, die Ihnen antwortet.Hier ist eine Möglichkeit, dies zu tun:
Dies
wc -l
ist eine Anzahl von Zeilen,<
die von der "Standardeingabe" gelesen werden.Jedes
wc
wird$()
in die Ausgabe eingewickelt, in der es nur ersetzt.Das
$(( ... ))
ist Shell-Arithmetik (wie jemand in einem Kommentar sagte). Beachten Sie das Minuszeichen in der Mitte.Variablen könnten es klarer machen; Hier ist eine andere Version der gleichen Sache:
quelle