根据linux中第三列的条件交换两列

时间:2017-11-22 12:35:33

标签: linux multiple-columns

我有一个包含3列的文件

  Col1         Col2          Col3 
   A            B             <-
   C            D             ->
   E            F             ->

只要有

,我想交换Col1和Col2的条目
<-

在第三栏。我希望我的输出文件像

 Col1         Col2          Col3 
   B            A             ->
   C            D             ->
   E            F             ->

2 个答案:

答案 0 :(得分:0)

简短的awk示例是

 cat foooo | awk '{if (match($3,"<-")){print $2,$1,$3}else{print $1,$2,$3}}' 

其中foooo是文件名。

如果您还想更改“&lt; - ”,则代码将为

 cat foooo | awk '{if (match($3,"<-")){print $2,$1,"->"}else{print $1,$2,$3}}' 

答案 1 :(得分:0)

awk '($3=="<-"){$3=$2;$2=$1;$1=$3;$3="->"}1' <file>

基本上,如果$3=="<-",则交换列并重新定义$3。然后打印。