我有一个文本文件如下所示:
empty 2
23 8
19 1
empty
11
如果第1列的关键字为“空”,我试图在第2列添加新行。有人知道怎么做吗?以下是预期的输出:
empty
23 2
19 8
empty
11 1
答案 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;为空时,它才会消耗第二个数组中的值。