Как я могу просто напечатать блоки шаблонов, где у меня есть DFW-YYYY ... и игнорировать другие. Мой стартовый паттерн - ### Мой концевой паттерн - ##
Также шаблон линии DFW-YYYY может иметь несколько [] скобок. это не исправлено. Мне нужно сопоставить точную / частичную строку (которая может включать в себя [бла] скобки для совпадения.
Я видел статью, где весь шаблон помещается в буфер и печатается только при обнаружении конечного шаблона. Я ищу усовершенствование этого мыслительного процесса, который я печатаю условно, как только нахожу начальный и конечный блок шаблонов. Статья, о которой я говорю: Как печатать линии между двумя шаблонами, включающими или исключающими (в sed, AWK или Perl)?
I have a file like:
xxx
xxx
###
xxx
zzz Problem Key: DFW-XXXXX [blah blah][blah blah][blah blah]
yyy
xxx
*##*
yyy
###
zzz
xxx
yyy
zzz Problem Key: DFW-YYYY [blah blah][blah blah]
*##*
xxx
xxx
zzz
yyy
###
xxx
zzz Problem Key: DFW-XXXXX [blah blah][blah blah][blah blah]
yyy
xxx
*##* ....
Шаблон, который я пытался улучшить, был:
awk 'flag{
if (/*##*/)
if (print_flag =1 )
{printf "%s", buf; flag=0; buf=""} /* only print if print_flag =1 */
else
{ flag=0; buf=""} /* ignore pattern */
else
buf = buf $0 ORS
/* peek into $0 and look for conditional pattern.
conditional pattern may have sq brackets like [] but not limited to one occurrence
I could avoid spl chars if I could look for multiple small strings within $0.
Like $0 ~ "x" and $0 ~ "y" and $0 ~ "z", this way spl. char matching can be avoided
but conditional pattern can still be matched*/
if ($0 ~ "conditional-pattern1" and $0 ~ "conditional-pattern2" and $0 !~ "conditional-pattern3")
print_flag=1
}
/###/ {flag=1}' <file-name>
But my if statements of looking into $0 value for condition and assigning/ checking print_flag is failing syntactically.
Any guidance on how this could be achieved.