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
と、実装者が長さゼロの一致を処理する方法を決定する必要はなく、そうでなければ多くの場合、多少冗長で無駄な出力が生成されます。