如何提取第 m 次和第 n 次出现的字符串之间的行?
How can I extract lines between m-th and n-th occurence of string?
这是我的样本:
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" - 我需要能够提取标签的第二次和第三次出现之间的行。我该怎么做?
也很抱歉样本的语言。
Awk 可以用:
awk 'begin{ n=0; } /^POLÉVKA:/ { n++; } { if (n==2) print [=10=] }' sample.txt
你可以使用这个 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
这是我的样本:
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" - 我需要能够提取标签的第二次和第三次出现之间的行。我该怎么做?
也很抱歉样本的语言。
Awk 可以用:
awk 'begin{ n=0; } /^POLÉVKA:/ { n++; } { if (n==2) print [=10=] }' sample.txt
你可以使用这个 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