grepマニュアルで-o(一致のみ)について言った内容を誤解しました。

grepマニュアルで-o(一致のみ)について言った内容を誤解しました。

grep手動引用:

-o、--matchのみ
一致する行の一致する(空でない)部分のみが印刷され、各部分は別々の出力行に表示されます。

matched (non-empty) parts of a matching line方法空白ではない行正しいですか?

修正する

コメントが削除された場合は、下記のStephenの回答をご覧ください。

  • 説明:「行の空の部分一致」の代わりに「行の空の文字列」はどうですか? – ラホールの10時間前
  • 大切なタグは「一致するセット」だと思います。 「一致する文字列」も機能します。どちらが良いか尋ねる人ではありません。 - スティーブンジッター59分前

ベストアンサー1

これは、実際には空でない行ではなく、一致する行の空でない一致部分を表します。これ結果出力には空でない行だけが含まれ、1行に1つの空でない一致があることです。

grep -o一致するアイテムごとに1行を印刷します。

$ grep -Eo '.?' <<<"hello"
h
e
l
l
o

ただし、空の一致は出力されません。多くの正規表現は空のテキストと一致することがあります。たとえば、次のようになります。

$ grep -E '.?' <<<""

空行が一致するため、空行を出力します。ただし、-o結果を追加すると、まったく出力は生成されません。

$ grep -Eo '.?' <<<""

-o空の一致は無視されるためです。

空の一致を無視するように指定する-oと、実装者が長さゼロの一致を処理する方法を決定する必要はなく、そうでなければ多くの場合、多少冗長で無駄な出力が生成されます。

おすすめ記事