在第1列上查找特定关键字,并在第2列shell脚本上添加新行

时间:2016-03-05 23:56:30

标签: bash shell awk sed

我有一个文本文件如下所示:

 empty      2
 23         8
 19         1
 empty
 11

如果第1列的关键字为“空”,我试图在第2列添加新行。有人知道怎么做吗?以下是预期的输出:

 empty      
 23         2
 19         8
 empty
 11         1 

2 个答案:

答案 0 :(得分:1)

awk救援!

$ awk 'p{t=$2;$2=p;p=t} $1=="empty"{if($2!=""){p=$2;$2=""}}1' file

empty                                                                                                                        
23 2
19 8
empty 
11 1

答案 1 :(得分:1)

这是gnu awk的脚本:

{ col1[ FNR ] = $1
  col2[ FNR ] = sprintf("%s %s",$2, $3)
}

END {
  k2 = 0;
  for( k1 = 1; k1 <= FNR; k1++) {
      if( col1[ k1 ] != "empty" ){
         k2++
         print col1[ k1], col2[ k2]
      }
      else print col1[ k1]
  }
}

它将column1和(第2列+第3列)的值存储在两个不同的数组中。在输出期间(在END中),仅当第一列不是&#34;为空时,它才会消耗第二个数组中的值。