sedでコマンドの前にパターンを変更する目的は何ですか?

sedでコマンドの前にパターンを変更する目的は何ですか?

ここに例があります。協会について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]*/。これは、行に表示される最初の数値の順序と一致します。

    • 一般英語の概要:で始まる各行の最初の数値シーケンスを削除します#

    • はい# 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パターンが一致しないため、変更されていません。

おすすめ記事