我有一个文本文件,看上去如下所示:
empty 2
23 8
19 1
empty
11如果第1列的关键字为“空”,我将尝试在第2列中添加新行。有人知道怎么做吗?预期产出如下:
empty
23 2
19 8
empty
11 1 发布于 2016-03-06 01:19:15
下面是gnu的脚本:
{ 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中),只有当第一列不是“空”时,它才会消耗来自第二个数组的值。
发布于 2016-03-06 00:20:29
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 1https://stackoverflow.com/questions/35821409
复制相似问题