Awk 不在两个模式之间提取数据

Awk 不在两个模式之间提取数据,awk,Awk,我已经尝试过这个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.t

我已经尝试过这个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&&found{exit}$0~start{found=1;next}found'输入文件

不起作用:(@user3423407,您好,这是一个经过测试的解决方案,有您展示的样本,您能告诉我更多细节吗?这里什么不起作用?谢谢您。您好@RavinderSingh13-感谢您对此进行研究。如果您显式设置模式,这是有效的。我使用的是一个变量,如您所见--awk-v ff=“$file”。由于某些原因,无法提取模式之间的数据。@RavinderSing13-上述方法奏效了!!!!关于我的代码为什么不起作用,有什么建议吗?@user3423407,你的搜索方式基本上是不正确的。如果这对你有帮助的话,你可以投票接受我的答案,干杯,学习愉快。