awk - awk 开始和结束具有相同的字符串
问题描述
我想打印
- 开始和结束之间的内容
- 开始和第二次结束之间的内容
不幸的是 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 '
/^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
推荐阅读
- javascript - 使单词出现在屏幕随机位置的 JavaScript/JQuery 代码不起作用
- java - 无法通过 KafkaIO 在光束中读取卡夫卡
- python - 试图将 C 代码更改或解释为 python
- collections - 合并单个集合中的两列
- azure - Azure 内部负载均衡器 - 静态还是动态?
- docker - 无法设置 apache、php、mysql 和 adminer
- c# - 防止 Action 设置为 null(私下除外)
- matomo - 根据其基本 URL 获取单个页面的 URL 指标,忽略查询字符串
- django - 在 django 上安装 django cms 后,Django 管理员搜索图标变得如此之大
- java - 2种弹簧测试的优缺点是什么