sed + 単語が発生しない場合にのみ、各文字列に最後の単語を追加します。

sed + 単語が発生しない場合にのみ、各文字列に最後の単語を追加します。

次のファイルがあります。

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から末尾の改行を削除し、各呼び出しに改行を追加します。変数は現在の行です。したがって、行がまだ一致していない場合は、行に追加されます。perl-e-lprint$_mtt.corp

奇妙な解決策:

$ 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に追加し、各行()を印刷します。$01;

関連情報