2

行に文字列が存在する場合に、テキスト ファイルの行をコメント アウトする単純なシェル スクリプト (sed または awk を使用) を探しています。例として、次のようなテキスト ファイルがあります。

line1 word1 word2
line2 word3 word4
line3 word5 word6
line4 word1 word7
line5 word10 word11

変更対象:

#line1 word1 word2
line2 word3 word4
line3 word5 word6
#line4 word1 word7
line5 word10 word11

ご覧のとおり、文字列「word1」を含む行だけがコメント アウトされています。

4

3 に答える 3

5

これでうまくいくと思います。

 sed -i .backup "/[[:<:]]word1[[:>:]]/s/^/#/g" file
于 2013-04-24T03:16:39.307 に答える
0

これを試して:

$ sed -e '/[[:<:]]word1[[:>:]]/ s/^/# /' < file
# line1 word1 word2
line2 word3 word4
line3 word5 word6
# line4 word1 word7
line5 word10 word11

これはどのように作動しますか?sedマニュアルページには、

sed コマンドの形式は次のとおりです。

     [address[,address]]function[arguments]

マニュアル ページの後半で、アドレスを正規表現にすることができることを明確にしています。これにより、正規表現に一致する各行に関数が適用されます。したがって、上記のコマンドが行うことは、行にスタンドアロンの単語 が含まれているword1場合、置換関数を適用して行頭アンカーを に置き換えること"# "です。

于 2013-04-24T04:47:08.200 に答える