按照第一栏说明打印选择字段

多瓦

假设我有一个文件,我想在其中awk按照第一列的说明同时打印不同的命令,而又不会弄乱原始文件(因为两次单独打印会发生这种情况):

文件:

End 1st 2nd 3rd
Fin 1st 2nd 3rd

我想将以下命令组合成一个单行:

awk '$1 ~ /^E/ {print $2}'
awk '$1 ~ /^F/ {print $3}'

要获得以下输出:

End 1st
Fin 2nd

编辑我的意思是说“整理原始文件”:

档案1:

E1   NAME1 LASTNAME1
FA   22   1992         #age, year
FC   UK   London       #country, city
FJ   IT   HP           #job, company
E2   NAME2 LASTNAME2
FA   25   1989        
FC   CH   Geneva      
FJ   CS   SIB    

现在,如果我运行两个单独的awk打印,将无法将文件3中的信息与文件2的名称相匹配(特别是如果^F字段不是相同的数字):

awk '$1 ~ /^E/ {print $2}' File 1 > File 2

输出(文件2):

NAME1
NAME2

awk '$1 ~ /^F/ {print $3}' File 1 > File 3

输出(文件3):

1992        
London       
HP           
1989        
Geneva      
SIB  

但是,如果我加入他们(如答案中所建议),我将可以拥有这样的东西:

预期产量:

NAME1
1992        
London       
HP  
NAME2
1989        
Geneva      
SIB  
多义词
awk '$1 ~ /^E|^F/ {if ($1 == "End") print $1" "$2; if ($1 == "Fin") print $1" "$3}'

或者

awk '/^End/{print $1" "$2}/^Fin/{print $1" "$3}'

(感谢People

应该管用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章