awk或者sed删除块 [英] sed or awk to delete a block

查看:224
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆