コマンドラインを使用してシェル/config/rubyスクリプトにコメントを付けるか、コメントを解除する方法はありますか?
たとえば、
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
オンラインログインが追加または削除されます#
。一般的に使用しますが、行の内容を知ってから検索と置換を実行する必要があります。これにより、複数のピンがあると誤った結果が得られます(N番目のピンaのみを交換しようとします)。bla.conf
14
18
sed
答え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"
答え2
GNU sedを使用する(ファイルをオプションに置き換えます-i
):
sed -i '14,18 s/^/#/' bla.conf
sed -i '14,18 s/^##*//' bla.conf
答え3
プロジェクトで再利用できる関数を含む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
答え4
使用幸せ(以前のPerl_6)
次の行をコメントアウトします。
~$ raku -ne 'if (6 <= ++$ <= 8) { put S/^/#/ } else { $_.put };' alpha10.txt
#OR
~$ raku -ne '(6 <= ++$ <= 8) ?? put S/^/#/ !! $_.put;' alpha10.txt
#OR
~$ raku -ne 'put (6 <= ++$ <= 8) ?? S/^/#/ !! $_;' alpha10.txt
#OR
~$ raku -pe 'if (6 <= ++$ <= 8) { s/^/#/ };' alpha10.txt
入力例:
~$ raku -e 'print "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\n";' > alpha10.txt
出力例:
a
b
c
d
e
#f
#g
#h
i
j
if
これらの答え(上と下)は、Rakuの条件付き構文(else
または3項:「Test ??
True !!
False」)を使用します。詳しくは下記URLをご覧ください。接続<=
の不平等に注意してください。また、条件の周りの括弧は重複しています。引用に問題がある場合は、(数量子の有無にかかわらず)を介して#
単一文字、カスタム文字クラスとしてoctothorpeを入力できます。<[#]>
次の行のコメントを外します。
~$ raku -ne 'if (6 <= ++$ <= 8) { put S/^ \s* "#" // } else { $_.put };' alpha10commented.txt
#OR
~$ raku -ne '(6 <= ++$ <= 8) ?? put S/^ \s* "#"// !! $_.put;' alpha10commented.txt
#OR
~$ raku -ne 'put (6 <= ++$ <= 8) ?? S/^ \s* "#" // !! $_;' alpha10commented.txt
#OR
~$ raku -pe 'if (6 <= ++$ <= 8) { s/^ \s* "#" // };' alpha10commented.txt
入力例:
~$ raku -e 'print "a\nb\nc\nd\ne\n#f\n#g\n#h\ni\nj\n";' > alpha10commented.txt
出力例:
a
b
c
d
e
f
g
h
i
j
https://docs.raku.org/syntax/if
https://docs.raku.org/言語/operators#index-entry-operator_ternary
https://raku.org