我正在尝试删除多个文件的最后4列。我正在使用gawk函数。它适用于某些文件。但是在某些输出文件中,行数与输入文件中的行数相同或更少。
gawk '{print >$NF".txt"} meta.txt| gawk -i inplace '{NF-=4; print}' *.txt
我在这里做错什么了吗?
修改/更新:如果两个命令在没有管道gawk -i inplace的情况下分别运行,则工作正常。
答案 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速记。