コマンドラインを使用して特定の行にコメントを付けたり、コメントを解除したりする最も簡単な方法

コマンドラインを使用して特定の行にコメントを付けたり、コメントを解除したりする最も簡単な方法

コマンドラインを使用してシェル/config/rubyスクリプトにコメントを付けるか、コメントを解除する方法はありますか?

たとえば、

$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf

オンラインログインが追加または削除されます#。一般的に使用しますが、行の内容を知ってから検索と置換を実行する必要があります。これにより、複数のピンがあると誤った結果が得られます(N番目のピンaのみを交換しようとします)。bla.conf1418sed

ベストアンサー1

bla.confの2行から4行にコメントを追加します。

sed -i '2,4 s/^/#/' bla.conf

必要なコマンドを生成するには、上記の内容を comment というシェルスクリプトに入れます。

#!/bin/sh
sed -i "$1"' s/^/#/' "$2"

このスクリプトは、最初の行と最後の行がダッシュではなくカンマで区切られていることを除いて、スクリプトと同じように機能します。たとえば、

comment 2,4 bla.conf

コメント解除コマンドも同様に生成できます。

高度な機能

sedラインの選択はかなり印象的です。最初の行と最後の行を数字で指定することに加えて、正規表現で指定することもできます。したがって、インクルードラインからfooインクルードラインまでのすべてのラインにコマンドを発行するには、bar次のようにします。

comment '/foo/,/bar/' bla.conf

BSD(OSX)システム

BSD sedの場合、この-iオプションには空の文字列でも引数が必要です。たとえば、上記のトップレベルのコマンドを次のように置き換えます。

sed -i '' '2,4 s/^/#/' bla.conf

そしてスクリプトのコマンドを次のように置き換えます。

sed -i '' "$1"' s/^/#/' "$2"

おすすめ記事