文件内列删除

时间:2019-06-30 22:36:56

标签: awk

我正在尝试删除多个文件的最后4列。我正在使用gawk函数。它适用于某些文件。但是在某些输出文件中,行数与输入文件中的行数相同或更少。

  gawk '{print >$NF".txt"} meta.txt| gawk -i inplace '{NF-=4; print}' *.txt

我在这里做错什么了吗?

修改/更新:如果两个命令在没有管道gawk -i inplace的情况下分别运行,则工作正常。

1 个答案:

答案 0 :(得分:4)

您在做什么显然没有意义。不用创建具有所有字段的文件,然后从刚创建的每个文件中删除最后4个字段,只需在最初创建文件时不要打印最后4个字段:

awk '{out=$NF".txt"; NF-=4; print > out}' meta.txt

要不影响其余字段中的字段分隔符,请改用此方法:

awk '{out=$NF".txt"; sub(/(\s+\S+){4}$/,""); print > out}' meta.txt

以上两种情况都假设您正在使用GNU awk-第一个用于递减NF实际更改$ 0,第二个用于\ s / \ S速记。