awk或者sed删除块 [英] sed or awk to delete a block
本文介绍了awk或者sed删除块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我输入的文件中有块像
[ABC]
PARA1 = 123
PARA2 = 456
para3各个= 111[PQR]
PARA1 = 333
PARA2 = 765
para3各个= 1345[XYZ]
PARA1 = 888
PARA2 = 236
para3各个= 964[PQR]
PARA1 = TYU
PARA2 = GHJ
para3各个= ghjk[XYZ]
PARA1 = QWE
PARA2 = ASD
para3各个= ZXC
现在我需要删除这是重复使用awk或者sed块。必须删除其中我们首先从文件的顶部块。例如:在上述情况下,我们得到这样的输出
[ABC]
PARA1 = 123
PARA2 = 456
para3各个= 111[PQR]
PARA1 = TYU
PARA2 = GHJ
para3各个= ghjk[XYZ]
PARA1 = QWE
PARA2 = ASD
para3各个= ZXC
解决方案
我不使用 AWK
(不知道如果你没有忘记 ABC
块)
的awk'!a [$ 1] ++'RS = ORS =\\ n \\ n的文件
[ABC]
PARA1 = 123
PARA2 = 456
para3各个= 111[PQR]
PARA1 = 333
PARA2 = 765
para3各个= 1345[XYZ]
PARA1 = 888
PARA2 = 236
para3各个= 964
my input file has blocks like
[abc]
para1=123
para2=456
para3=111
[pqr]
para1=333
para2=765
para3=1345
[xyz]
para1=888
para2=236
para3=964
[pqr]
para1=tyu
para2=ghj
para3=ghjk
[xyz]
para1=qwe
para2=asd
para3=zxc
Now I need to delete the block which is duplicate using sed or awk. Have to delete the block which we get first from the top of the file. Ex: in above case, we have get the output like
[abc]
para1=123
para2=456
para3=111
[pqr]
para1=tyu
para2=ghj
para3=ghjk
[xyz]
para1=qwe
para2=asd
para3=zxc
解决方案
I do get this from using awk
(not sure if you did forget the abc
block)
awk '!a[$1]++' RS= ORS="\n\n" file
[abc]
para1=123
para2=456
para3=111
[pqr]
para1=333
para2=765
para3=1345
[xyz]
para1=888
para2=236
para3=964
这篇关于awk或者sed删除块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文