我有一个包含几行数据的文件。有些行包含三列,但大多数行只包含两列。所有行都是单制表符分隔的。对于包含三列的数据,第三列通常是多余的,并且包含与第二列相同的数据,因此我想删除它。
我认为awk或cut是合适的,但是我在如何测试三列的行上画了一个空白,这样我的脚本将只在这些行上工作。我知道awk是一种非常强大的语言,它包含了逻辑和其他东西,我只是不太擅长它。
我看了一个similar question,但我不确定awk答案是怎么回事。既然我只想删除一列,-4应该是-1吗?如果行有两列,那会怎样?即使我什么也不想做,它会删除第二列吗?
我把它改成了我想的那样:

awk -F"\t" -v OFS="\t" '{ for (i=1;i<=NF-4;i++){ print $i }}'

但当我运行它(与文件)时,什么也没有发生。如果我改变nf-1或nf-2,我会得到一些输出,但它只有几行,只有第一列。
有人能告诉我该怎么做吗?

最佳答案

如果只想删除第三列,可以只打印第一列和第二列:

awk -F '\t' '{print $1 "\t" $2}'

它类似于切割:
cut -f 1,2

关于linux - 使用bash从具有三列的行中删除最后一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18626129/

10-10 01:53