3

ascii 形式の長いテキスト ファイルがあります。時々、それはPage: #####一列に並んでいます。「ページ:25141」から始まり、その後のすべての行をドキュメントの最後まで一致させたいと思います。

私が試したコンボのいくつかは次のとおりです。

grep -E ^["Page: 25141".*] document.txt
grep  "Page: 25141.*" document.txt
grep  "Page: 25141\.\*" document.txt
grep -E "Page: 25141"[.*] document.txt
grep -E "Page: 25141"{.*} document.txt
grep -E {"Page: 25141".*} document.txt

これを機能させることはできません。

4

3 に答える 3

6

sed ソリューションで問題ない場合:

sed -n '/Page: 25141/,$p' file

上記の sed は、パターン 'Page 25141 を含む行からファイルの終わり ($) までの範囲内のすべての行に一致します。

于 2013-04-19T04:25:38.260 に答える
3

grep行指向なので、複数行を正規表現で照合するのは簡単ではありません。ただし、この-Aオプションは、一致した後にコンテキストを出力します。

grep -A 1000000000 'Page: 25141'

edまたはでそれを行うこともできますsed

echo '/Page: 25141/,$p' | ed -s filename

同様の質問に対するネノオペラの回答.*に基づいて、私はほとんどそれで動作するようになりました。唯一の問題は、最後に余分な改行が出力されることです。

grep -Pzo '(?s)Page: 25141.*'
于 2013-04-19T04:25:01.217 に答える
0

そのような仕事のために構築された awk について考えることができます。awk 'BEGIN{i=0;} /pattern/ {i=1;} {if(i==1) print}' fileあなたの仕事をうまくやってくれるでしょう、そしてあなたがもっとやりたいのなら。

于 2013-04-19T09:09:28.520 に答える