if $ column_A =""等于删除awk中的$ column_A?

时间:2015-11-20 08:54:13

标签: awk

我希望在awk中删除我的一列数据,但我发现使用的命令如$ column_A =""。 column_A是否真的以这种方式删除了?

例如,我希望删除第二列,我找到了一个解决方案:awk 'BEGIN{FS="\t";OFS="\t"}!($2="")',其打印结果如:$1^0^0$3。似乎第二列的内容被删除但第二列。

2 个答案:

答案 0 :(得分:2)

在阅读了dev-null的评论之后,我知道你在问什么......

我的回答是:这取决于你如何定义“删除一列”。

见这个例子:

kent$  echo "foo,bar,blah"|awk -F, -v OFS="," '{$2="";print}'
foo,,blah

kent$  echo "foo,bar,blah"|awk -F, -v OFS="," '{print $1,$3}'
foo,blah

你看到了区别吗?如果设置$x=""列仍然存在,但它变为空字符串。所以FS停留之前和之后。如果这是你想要的,那很好。否则只需跳过输出目标列,如第二个示例所示。

答案 1 :(得分:0)

我会使用cut

cut -d$'\t' -f1,3- file

-f1,3-选择第一个字段,跳过字段2,然后选择字段3结束。