
これに例があるリンクについてsed
:
「#」で始まるすべての行の最初の数字を削除するには、次を使用します。
sed '/^#/ s/[0-9][0-9]*//'
最初のパターン( )の利点は何でしょうか/^#/
?それは単純に次のようになります。
sed 's/^#[0-9][0-9]*//'
答え1
sed
コマンドの一般的な形式は
[address[,address]] function
コマンドに単一のアドレスがある場合、そのアドレスに一致するすべての行が処理されます。コマンドにアドレスがない場合、すべての行が処理されます。
参照:POSIXsed
具体的な例に関して:
/^#/ s/[0-9][0-9]*//
このコマンドにはアドレス があり、
/^#/
これは で始まるすべての行に一致します#
。置換パターンは です
/[0-9][0-9]*/
。これは、行内のどこに出現しても最初の数字シーケンスと一致します。平易な英語による要約: a で始まる各行の最初の数字シーケンスを削除します
#
。例:
# non-digits|5555|non-digits|5555
は# non-digits||non-digits|5555
s/^#[0-9][0-9]*//
アドレスがないので、このコマンドはすべての行に対して実行されます。
置換パターンは
/^#[0-9][0-9]*/
、連続する数字のシーケンスに一致し、その前には#
固定された行の先頭に。平易な英語による要約:
#
各行の先頭から、数字のシーケンス (そのパターンのみ) を削除します。例:
#5555|non-digits|5555
は になります|non-digits|5555
が、# non-digits|5555|non-digits|5555
置換パターンが一致しないため変更されません。
答え2
最初のものは一致して置換されます:
#abc99
2番目はそうではありません。
さらに、2 番目では最初の も削除されます#
。