unix - 循环和处理awk中两个模式之间的线块?
问题描述
这实际上是这个问题的延续版本:
我有一个文件
1
2
PAT1
3 - first block
4
PAT2
5
6
PAT1
7 - second block
PAT2
8
9
PAT1
10 - third block
我awk '/PAT1/{flag=1; next} /PAT2/{flag=0} flag'
用来提取线条块。
提取它们工作正常,但我试图以逐块的方式迭代这些 blooks 并对每个块进行一些处理(例如保存到文件,处理其他脚本等)。
我怎样才能构建这样的循环?
解决方案
问题不是很清楚,但你可以这样做:
awk '/PAT1/ {
flag = 1
++n
s = ""
next
}
/PAT2/ {
flag = 0
printf "Processing record # %d =>\n%s", n, s
}
flag {
s = s $0 ORS
}' file
Processing record # 1 =>
3 - first block
4
Processing record # 2 =>
7 - second block
推荐阅读
- javascript - 如何防止音频文件丢失?
- python - 如何将为电子邮件创建的内容转换为 Python 中的 PDF 文件?
- root-framework - 如何创建根文件
- sql - 将 Wikipedia Dump 导入 MediaWiki 时出错
- c++ - 使用函数作为另一个函数的参数
- python - 如何在没有 itertools 的情况下替换 itertools.product?
- java - Maven 编译器插件使用自动 java 9 模块失败
- sql - 计算 varchar 数组 Postgres 中不同元素的数量
- python - 根据单独的 csv 中两列的两个值之间的比较删除 csv 行
- asp.net-core - 身份服务器 4 备用注销重定向 uri