始まる単語に基づいて行にコメントを付けるには?

始まる単語に基づいて行にコメントを付けるには?

サンプルファイルの内容:

--------------------
NETWORKING=yes
HOSTNAME=wls1.ebs-testsrvrs.com
# oracle-rdbms-server-12cR1-preinstall : Add NOZEROCONF=yes
NOZEROCONF=yes
--------------------

「HOST」で始まるすべての行をコメントアウトしたいです。

ベストアンサー1

存在するvi

:%s/^HOST/#&/

または

:g/^HOST/s//#&/

最初のコマンドは%「フルバッファから」を意味し、縮小は最初の行1,$から最後の行までを意味します。&置換セクションの置換内容は、^HOSTパターン()に一致する全文で置き換えられます。

2番目のコマンドは、s///セルフエディタを継承したグローバル()コマンドを使用して、一致したすべての行に置換()を適用します。 2番目のケースでは、コマンドは空の正規表現を使用します。これにより、コマンドで最近使用した正規表現を再利用できます。置換は最初のコマンドと同じです。^HOSTgvieds///^HOSTg

そしてsed

sed 's/^HOST/#&/' input >output

または

sed '/^HOST/s//#&/' input >output

viin(常に入力ストリームのすべての行にすべてのコマンドを適用するため、このようなものを明示的sedには使用しません)と同じ方法です。%gsed


到着削除する次に始まる行のコメント文字#HOST:

sed 's/^#HOST/HOST/' input >output

または

sed '/^#HOST/s/.//' input >output

上記の2つのコマンドのうち、2番目のコマンドは、で始まるすべての行s///にコマンドが適用されます#HOST。このs///コマンドは行の最初の文字のみを削除します。

viこれら2つのコマンドに対応するコマンドは次のとおりです。

:%s/^#HOST/HOST/

そして

:g/^#HOST/s/.//

それぞれ

おすすめ記事