如何在第m个和第n个字符串出现之间提取线?

时间:2016-09-26 15:27:45

标签: bash text-processing

这是我的样本:

POLÉVKA:  Silný vývar z hovězího žebra s masem a zeleninou, vlasové nudle  
ŘÍZEČKY z KUŘECÍCH PRSÍČEK obalované v bylinkovém těstíčku smažené na slunečnicovém oleji podávané s mléčnou bramborovou kaší, šopský salátek  
ŠPAGETY AGLIO OLIO prohozené s parmskou šunkou a domácím bazalkovým pestem se sušenými  rajčaty, hoblinky parmazánu  
Restovaná KUŘECÍ JATÝRKA se šalotkou a masovou slaninou zakápnutá červeným vínem, hranolky, domácí tatarská omáčka 

POLÉVKA:  Ruský boršč se zakysanou smetanou  
PEČENÉ KUŘE z českého chovu na čerstvém másle s kořenovou zeleninou a divokým kořením, vařený brambor, švestkový kompot  
SPECIALITA: Vídeňská HOVĚZÍ ROŠTĚNÁ z mladého býčka sypaná čerstvým křenem a smaženou cibulkou, pečené brambory, hořčičná omáčka  
NUDLIČKY z vepřové kýty po SEČUANSKU s křupavou čerstvou zeleninou, jasmínová rýže  
Šagety „PASTICIANA“ podávané s nudličkami z HOVĚZÍHO PUPKU restované na šalotce a červeném víně s tomaty, hoblinky parmazánu  
Filírované KUŘECÍ PRSÍČKO na variaci trhaných salátových listů a čerstvé zeleniny s dresinkem z bílého jogurtu a modrého sýra, celozrnné pečivo  

POLÉVKA: Šumavská bramboračka  
GULÁŠEK „PRAZDROJ“ z HOVĚZÍ KLIŽKY s  ½ houskovým knedlíkem a ½ bramboráčky zdobený kulatou feferonkou  

还有一个标签“POLÉVKA” - 我需要能够在标签的第二次和第三次出现之间提取线条。我怎么能这样做?

对于样本的语言也很抱歉。

2 个答案:

答案 0 :(得分:1)

Awk可以这样做:

awk 'begin{ n=0; } /^POLÉVKA:/ { n++; } { if (n==2) print $0 }' sample.txt

答案 1 :(得分:1)

你可以使用这个awk:

awk '/^POLÉVKA/{c++} c==2; c>2{exit}' file

POLÉVKA:  Ruský boršč se zakysanou smetanou
PEČENÉ KUŘE z českého chovu na čerstvém másle s kořenovou zeleninou a divokým kořením, vařený brambor, švestkový kompot
SPECIALITA: Vídeňská HOVĚZÍ ROŠTĚNÁ z mladého býčka sypaná čerstvým křenem a smaženou cibulkou, pečené brambory, hořčičná omáčka
NUDLIČKY z vepřové kýty po SEČUANSKU s křupavou čerstvou zeleninou, jasmínová rýže
Šagety „PASTICIANA“ podávané s nudličkami z HOVĚZÍHO PUPKU restované na šalotce a červeném víně s tomaty, hoblinky parmazánu
Filírované KUŘECÍ PRSÍČKO na variaci trhaných salátových listů a čerstvé zeleniny s dresinkem z bílého jogurtu a modrého sýra, celozrnné pečivo

工作原理:

/^POLÉVKA/{c++} # if "POLÉVKA" is found at start of a line increment counter c
c==2            # if c==2 then print the line using default awk action
c>2{exit}       # when c>2 then exit