【发布时间】:2016-04-03 06:51:51
【问题描述】:
晚安,
我有一个格式如下的文件:
XXXXXXXXXXXYYYYYYYYAAAAAAAA
XXXXXXXXXXXIIIIIIII22222222
XXXXXXXXXXXOOOOOOOOPPPPPPPP
XXXXXXXXXXXAAAAAAAAKKKKKKKK
YYYYYYYYYYY22222222AAAAAAAA
YYYYYYYYYYY55555555BBBBBBBB
YYYYYYYYYYYGGGGGGGGKKKKKKKK
YYYYYYYYYYYQQQQQQQQ88888888
... 等等。每 4 行,第一部分 (X, Y, ...) 保持不变,其余行更改。行与行之间没有分隔符,文件很大。
我想找到一种方法来使用 awk 一次读取 4 行,将它们存储在 4 个变量中和/或将 RS 设置为 \n 并将 FS 设置为某个值,因为我想具体进行比较4行块。并且能够在匹配中输出所有4行
即,如果 substr(17,3) == X 输出您读取的所有 4 条记录。
我很抱歉没有提供代码,但我真的不知道如何用 awk 做到这一点。
给定一个特定的数字,即 Y=17,脚本将查找每个记录的给定子字符串。例如:
if (subst(11:2) == 17) then # This can be a match on any line of a 4 grouping ( ie X... )
print (all 4 lines - All X...) - or print a given substring of those lines.
提供示例的实际示例
if (substr($0,21,2) == "PP") { print all 4 lines in memory }
...and it would print :
XXXXXXXXXXXYYYYYYYYAAAAAAAA
XXXXXXXXXXXIIIIIIII22222222
XXXXXXXXXXXOOOOOOOOPPPPPPPP
XXXXXXXXXXXAAAAAAAAKKKKKKKK
【问题讨论】:
-
您将如何尝试进行比较?像
line1=="a" && line2=="b"之类的东西?你可以给我们一个关于你想如何工作的提示,否则它有点宽泛。另外,相关awk to change the record separator (RS) to every 2 lines.