gpt4 book ai didi

awk - 不提取两个模式之间的数据

转载 作者:行者123 更新时间:2023-12-02 02:19:48 25 4
gpt4 key购买 nike

我尝试过这个 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 '/JOHN SMITH-END/ && found{exit} /JOHN SMITH-START/{found=1;next} found' Input_file

说明:为上述内容添加详细说明。

awk '                         ##Starting awk program from here.
/JOHN SMITH-END/ && found{ ##Checking condition if line contains JOHN SMITH-END and found is SET then do following.
exit ##exiting from program from here.
}
/JOHN SMITH-START/{ ##Checking condition if line contains JOHN SMITH-START then do following.
found=1 ##Setting found to 1 here.
next ##next will skip all further statements from here.
}
found ##If found is set then print that line.
' Input_file ##Mentioning Input_file name here.

注意:如果您想在 awk 中使用变量进行搜索,请尝试以下操作:

awk -v start="JOHN SMITH-START"-v end="JOHN SMITH-END"'$0 ~ end && 找到{退出} $0 ~ start{found=1;next} 找到' Input_file

关于awk - 不提取两个模式之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66601965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com