2

ファイルt1.txtがあるとします

<div class="content"> main </div> <div class="data"> 100 </div>

私が走れば

grep -o "content.*</div>" t1.txt

それは戻ってきます

content"> main </div> <div class="data"> 100 </div>

最初に遭遇したテキストをgrepするにはどうすればよい</div>ですか? 私は手に入れたい

content"> main </div>

ありがとう!

4

2 に答える 2

2

遅延一致を使用します。

grep -P -o 'content.*?</div>' t1.txt

-Pgrep はデフォルトで遅延マッチングをサポートしていないため、perl 構文を使用するにはフラグが必要です。

編集者注記: 正規表現を使用して HTML を解析することは、ほとんどの場合、あまり良い考えではありません。

于 2013-08-31T23:20:31.320 に答える
2

貪欲であるため、最初の 1 回の grep*まで一致させるのは簡単ではありません。</div>Perl の遅延量指定子を使用できます*?

perl -lane '{print $1 if m!(content.*?</div>)!}' input

grep 式を少し変更することもできますが、柔軟性が低下します。

grep -o 'content">[^>]*</div>' input
于 2013-08-31T23:20:21.780 に答える