【发布时间】:2021-03-12 14:38:55
【问题描述】:
我试过这个 awk 命令,但由于某种原因它没有打印出两个模式之间的数据
这是我的整个 awk 命令
for file in `cat out.txt`
do
awk -v ff="$file" 'BEGIN {print "Start Parsing for"ff} /ff-START/{flag=1; next}/ff-END/{flag=0}flag; END{print "End Parsing"ff}' data.txt
done
这是data.txt的内容
JOHN SMITH-START
Device,Number
TV,1
Washing Machine,1
Phones, 5
JOHN SMITH-END
MARY JOE-START
Device,Number
TV,3
Washing Machine,1
Phones, 2
MARY JOE-END
这里还有 100 多个相似的行,模式是 NAME-START 和 NAME-END。因此,例如 JOHN SMITH-START 是第一个模式,然后 JOHN SMITH-END 是第二个模式,我想提取这两者之间的数据
Device,Number
TV,1
Washing Machine,1
Phones, 5
但我得到的输出是
Start Parsing forJOHN SMITH
End ParsingJOHN SMITH
out.txt的内容是
JOHN SMITH
MARY JOE
【问题讨论】:
标签: awk