Ich habe folgende Datei:
linuxA.mtt.corp
linux3V
linux4B
linux2A
linux5v.mtt.corp
wie fügt man das .mtt.corp
zu jeder Zeichenfolge hinzu, die dieses Wort nicht enthält?
Antwort1
Das geht ganz einfach mit sed
:
sed -e '/\.mtt\.corp$/!s/$/.mtt.corp/' <file
Dadurch wird s
das Zeilenende in .mtt.corp
jeder Zeile ersetzt, die nicht mit dieser Zeichenfolge endet.
Antwort2
Eine Perl-Lösung:
$ perl -lpe '$_ .= ".mtt.corp" if !/\.mtt\.corp$/' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp
Das -p
druckt perl
jede Zeile der Eingabedatei aus, nachdem das von angegebene Skript angewendet wurde -e
, und -l
entfernt nachfolgende Zeilenumbrüche aus jeder Eingabezeile und fügt bei jedem print
Aufruf einen hinzu. Die $_
Variable ist die aktuelle Zeile. Das wird also mtt.corp
zur Zeile hinzugefügt, wenn es nicht bereits damit übereinstimmt.
Eine awk-Lösung:
$ awk '!/\.mtt\.corp$/{$0=$0".mtt.corp"}1;' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp
Die gleiche Idee. .mtt.corp
wird zu allen Zeilen ( $0
) hinzugefügt, die nicht damit enden, und jede Zeile wird gedruckt ( 1;
).