コマンドラインを使用してShell/config/Rubyスクリプトをコメント/コメント解除する方法はありますか?
例えば:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
これにより、行#
からbla.conf
に14
サインオン18
が追加または削除されます。通常はsed
を使用しますが、これらの行の内容を知ってから検索置換操作を行う必要があります。これにより、複数の針がある場合に間違った結果が返されます(そして、 N番目のものを置き換える)。
Bla.confの2行目から4行目までコメントするには:
sed -i '2,4 s/^/#/' bla.conf
必要なコマンドを作成するには、上記をコメントと呼ばれるシェルスクリプトに挿入します。
#!/bin/sh
sed -i "$1"' s/^/#/' "$2"
このスクリプトは、最初と最後の行がダッシュではなくコンマで区切られることを除いて、あなたのスクリプトと同じように使用されます。例えば:
comment 2,4 bla.conf
コメント解除コマンドも同様に作成できます。
sed
の行選択は非常に強力です。番号で最初と最後の行を指定することに加えて、正規表現でそれらを指定することも可能です。したがって、foo
を含む行からbar
を含む行までのすべての行をコマンドする場合は、次のコマンドを使用します。
comment '/foo/,/bar/' bla.conf
BSD sedでは、-i
オプションは、空の文字列であっても引数が必要です。したがって、たとえば、上記のtopコマンドを次のように置き換えます。
sed -i '' '2,4 s/^/#/' bla.conf
そして、スクリプトのコマンドを次のように置き換えます。
sed -i '' "$1"' s/^/#/' "$2"
GNU sed(ファイルを-i
オプション):
sed -i '14,18 s/^/#/' bla.conf
sed -i '14,18 s/^##*//' bla.conf
VimはExモードで使用できます。
ex -sc 'g/^\s*[^#]/s/^/#/' -cx bla.conf
ex -sc 'g/^\s*#/s/#//' -cx bla.conf
g
グローバル正規表現
s
代替
x
保存して閉じる
プロジェクトで再利用する関数を含むbash_fileを作成できます
#!/bin/bash
# your target file
CONFIG=./config.txt
# comment target
comment() {
sed -i '' "s/^$1/#$1/" $CONFIG
}
# comment target
uncomment() {
echo $1
sed -i '' "s/^#$1/$1/" $CONFIG
}
# Use it so:
uncomment enable_uart
comment arm_freq