0

sed -e'/ pattern / {d; n}'

sed -e'/ pattern / {d}'

これらの2つのコマンドはLinuxで同じですか?最後にnを付けるのは意味がありますか?

「mansed」から、私は得ました:

nNパターンスペースへの入力の次の行を読み取り/追加します。

実際、私はこの行(u-boot helper.mk)を読みました:

sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \
      -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \
      -e 's/\.[^\.]\+$$$$//' \
      -e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }'
4

1 に答える 1

0

2つのコマンドは、2つの異なる(一見似ているように見えますが)目的を果たすために存在します。ただし、あなたの場合、「n」は冗長です。想起:

「n」コマンドは、現在のパターンスペースを出力し(「-n」フラグが使用されている場合を除く)、現在のパターンスペースを空にして、入力の次の行を読み込みます。

「d」コマンドは、現在のパターンスペースを削除し、次の行を読み込み、新しい行をパターンスペースに挿入し、現在のコマンドを中止して、最初のsedコマンドで実行を開始します。これは、新しい「サイクル」の開始と呼ばれます。

このブリーフはグリモアサイトから取られました。複数行の操作について詳しくは、こちらをご覧ください。

于 2013-02-07T04:16:42.537 に答える