Sed を使用して特定の文字列を含む行のコメントを解除するにはどうすればよいでしょうか? 質問する

Sed を使用して特定の文字列を含む行のコメントを解除するにはどうすればよいでしょうか? 質問する

ファイル内の行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT

コメントアウトするには、次の行をコメントアウトします。

2001

次の SED コマンドを実行するだけです:

sed -i '/ 2001 /s/^/#/' file

しかし、どうすれば元に戻せるのでしょうか?

同じ行のコメントを解除するということですか?

私は試した

sed -i '/ 2001 /s/^//' file

それは機能しません。

ベストアンサー1

はい、sed を使用して特定の文字列を含む行をコメント化するには、次のようにします。

sed -i '/<pattern>/s/^/#/g' file

コメントを解除するには:

sed -i '/<pattern>/s/^#//g' file

あなたの場合:

sed -i '/2001/s/^/#/g' file    (to comment out)
sed -i '/2001/s/^#//g' file    (to uncomment)

最後のオプション「g」はグローバル変更を意味します。パターンのインスタンスを 1 つだけ変更する場合は、これをスキップしてください。

おすすめ記事