2016-04-29 17 views
0

問題:在匹配第一行中的模式時從文件中提取4行

從模式匹配時從文件中提取4行數據(包括模式匹配行)。

<div class="class1"> 
 
<img class="class2" src="somelink" alt="xyz"> 
 
<div class="class3" title="some data to be extracted"> 
 
<div class="class4" style="width: 72%;"></div> 
 
</div> 
 
<div class="class1"> 
 
<img class="class2" src="somelink2" alt="xyz2"> 
 
<div class="class3" title="some data to be extracted 2"> 
 
<div class="class4" style="width: 72%;"></div> 
 
</div>

匹配圖案 - >的Class1

數據需要提取:

<div class="class1"> 
 
    <img class="class2" src="somelink" alt="xyz"> 
 
    <div class="class3" title="some data to be extracted"> 
 
    <div class="rating-wrap" style="width: 72%;"></div> 
 
    </div>

解決方案我試圖:

grep class1 xyz.html 

但是,這將只能得到單行。

+1

試試'grep -A4 -m1 class1 xyz.html',這個問題應該是重複的。 – blackSmith

+0

無法正常工作。剛試過。 –

+0

適合我!我編輯了評論,現在就試試。 – blackSmith

回答

2
grep -A4 class1 xyz.html 

這將獲取相同的

<div class="class1"> 
<img class="class2" src="somelink" alt="xyz"> 
<div class="class3" title="some data to be extracted"> 
<div class="rating-wrap" style="width: 72%;"></div> 
0

這太糟糕了,你沒有創建在輸入2個不同的塊,這樣你可以看到的「class1的」匹配的結果成功的人,但而不是其他。無論如何,你真的想這樣:

$ awk 'BEGIN{RS=ORS="\n</div>\n"} /class1/' file 
<div class="class1"> 
<img class="class2" src="somelink" alt="xyz"> 
<div class="class3" title="some data to be extracted"> 
<div class="class4" style="width: 72%;"></div> 
</div> 
<div class="class1"> 
<img class="class2" src="somelink2" alt="xyz2"> 
<div class="class3" title="some data to be extracted 2"> 
<div class="class4" style="width: 72%;"></div> 
</div> 

,因爲它會打印出匹配的字符串出現在無論在塊它匹配,其中,如塊:

$ awk 'BEGIN{RS=ORS="\n</div>\n"} /extracted 2/' file 
<div class="class1"> 
<img class="class2" src="somelink2" alt="xyz2"> 
<div class="class3" title="some data to be extracted 2"> 
<div class="class4" style="width: 72%;"></div> 
</div> 

,它可以很容易地調整了只在特定字段中查找匹配項,例如,對class1的搜索只查看class =字段,而不查看title =字段或行中的其他任何地方。

以上使用的GNU awk爲多字符RS。

相關問題