基于某些分组和模式Unix提取列

时间:2015-01-22 07:04:03

标签: regex awk grep

我有一个文件如下:

header1 header2 header3 header4 header5   
A123 ABC EFG ABC PQR       
A456 ABC JKL DEF ABC   
A789 ABC CDE HIJ ABC   
B123 CDE KLM MNO EFG   
B456 CDE NOP MNO CCC   
B789 EFG QRS MNO AAA   

正如你所看到的,A& amp;第1列中的B.文件中的模式显示第2列中A组的所有ABC和第4列中B组的所有MNO。我希望将第2列和第4列与标题一起提取。所以最终输出如下:

header1 header2 header4   
A123 ABC ABC        
A456 ABC DEF    
A789 ABC HIJ    
B123 CDE MNO    
B456 CDE MNO    
B789 EFG MNO 

有没有办法用unix命令这样做?感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:0)

您只需使用awk

即可
awk '{print $1" "$2" "$4}' file

<强>结果:

header1 header2 header4
A123 ABC ABC
A456 ABC DEF
A789 ABC HIJ
B123 CDE MNO
B456 CDE MNO
B789 EFG MNO

答案 1 :(得分:0)

awk

更短
awk '{print $1,$2,$4}' File

默认情况下,OFS中的awk(输出字段分隔符)是一个space。因此,只需打印每行中的1st2nd4th字段。