给定的文件具有以下结构:
a 123
b 876234
c 56456
d 65765
a 9879
b 9361
c 6527
d 823468
所以有数据块(行以a
,b
,c
,d
开头,空行划分两个块)我正在寻找此文件中的模式(例如9361)。如果在内部找到此模式,我想复制整个块(以a 9879
开头并以d 823468
开头的行)并将其写入另一个文件。
此模式可在文件中找到零次或多次。如果有多个结果,则应将每个块写入另一个文件。
你会怎么做?
答案 0 :(得分:3)
你可以用gawk来做。
gawk 'BEGIN {RS=""} /here goes your pattern/ { print $0}' INPUTFILE > OUTPUTFILE
这将gawk的记录分隔符设置为空行。
HTH
答案 1 :(得分:2)
假设您的数据位于file.txt中,这是perl中的解决方案。
perl -00 -ne "print if /9361/" file.txt
结果是在stdout上。
-00
会导致perl一次读取一个段落。-n
使perl逐个读取文件名参数。-e
用于指定perl命令。答案 2 :(得分:0)
红宝石(1.8 +)
ruby -00 -ne 'print if /9361/' file