次のファイルがあります:
linuxA.mtt.corp
linux3V
linux4B
linux2A
linux5v.mtt.corp
この単語が含まれていない各文字列に を追加するにはどうすればよいでしょうか.mtt.corp
?
答え1
それはとても簡単ですsed
:
sed -e '/\.mtt\.corp$/!s/$/.mtt.corp/' <file
これにより、その文字列で終わらない各行のs
行末が に置き換えられます。.mtt.corp
答え2
Perl ソリューション:
$ perl -lpe '$_ .= ".mtt.corp" if !/\.mtt\.corp$/' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp
は、 によって指定されたスクリプトを適用した後、入力ファイルの各行を印刷し-p
、は各入力行から末尾の改行を削除し、各呼び出しに 1 つ追加します。変数は現在の行です。したがって、すでに一致していない場合は、行に 追加されます。perl
-e
-l
print
$_
mtt.corp
awk ソリューション:
$ awk '!/\.mtt\.corp$/{$0=$0".mtt.corp"}1;' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp
同じ考え方です。 は、それで終わらない.mtt.corp
行 ( ) に追加され、各行が印刷されます ( )。$0
1;