首页 > 解决方案 > awk 开始和结束具有相同的字符串

问题描述

我想打印

  1. 开始和结束之间的内容
  2. 开始和第二次结束之间的内容

不幸的是 start 和 end 的值完全相同,并且 end 在 txt 文件中出现了两次

示例文件 -

My 
Dog 
Start
has 
a nice 
tail
end
My
Dog 
name 
end 
is 
jay

awk '/Dog/, /Dog/ {print $0}' awktest.txt-> 用于抓取两个 Dog 词之间的内容

awk '/Start/, /end/ {print $0}' awktest.txt-> 用于抓取 Start 和 second end 之间的内容

标签: awk

解决方案


请您尝试以下操作。根据所示样本编写。

awk '
/^start$/{
  found=1
}
found;
/^end$/ && ++count==2{
  found=""
}
' Input_file

简要说明:查找其中已开始的行,然后将 found 设置为 1,然后检查条件是否设置,然后打印该行。如果一行以结束词开头并且它的计数是 2 然后将 found 设置为 NULL,那么我们还可以检查条件,以便我们可以从那里停止打印。



上面也将打印带有 start 和 end 的行,如果您想跳过这些行,请尝试以下操作。

awk '
/^start$/{
  found=1
  next
}
/^end$/ && ++count==2{
  found=""
}
found;
' Input_file

推荐阅读