Portál AbcLinuxu, 11. května 2025 10:19
1 .. ahoj .. 2 .. .. .. 1 .. cau .. 2 ..------------------------------------------------------------------
.. jsou nejake radky, obecne nevim kolik chtela bych vytisknout casti mezi 1-2 ktere obsahuji ahoj awk '/1/,/2/ {print}' umim ale jak vytisknout jen ty co obsahuji ahoj?diky Terka
grep
, ale i na grep
$ cat soubor.txt | sed -n '/1/,/2/ p' | grep ahoj ahoj $ cat soubor.txt | awk '/1/,/2/ {print}' | grep ahoj ahojPS: Ten
cat
tam je "na víc" ...
awk '/1/,/2/ {if(match($0, "ahoj")) print;}'
ruby -e 'STDIN.read.scan(/^1$.*?^2$/m).grep(/ahoj/).each{|x|puts x}'Nicméně základní myšlenka by snad měla fungovat všude, kde jsou k dispozici víceřádkové regexpy. Prostě nejdřív vyjmu všechny výchozí skupiny "vocaď pocaď" (tady mezi jedničkou a dvojkou) a pak z nich vyďobu jen ty, co vyhoví podmínce.
#!/usr/bin/awk -f
BEGIN { data=""; willprint=0; }
/1/ { data=""; willprint=0; next; }
/2/ { if ( willprint == 1 ) print data; next; }
/ahoj/ { willprint=1; next; }
{ data=data $0 "\n"; next;}
cat $1|\ awk '/1/,/2/ {spoj=spoj $0 "\n"} { if (spoj~"1" && spoj~"ahoj" && spoj~"2") { {print spoj} {spoj=""} } } '>outdiky vsem! Terka
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.