如何在制表符分隔的文本文件中附加较少列的行?

时间:2016-12-24 13:16:10

标签: bash text awk sed text-processing

我有一个制表符分隔的文本文件。有些行有10列,有些行有11列。我想在10个列的最后一行中添加一个额外的列,其值为0.我该怎么做?

2 个答案:

答案 0 :(得分:2)

由于您已提到追加,您可以awk如下

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file

-F $'\t'处理制表符分隔部分BEGIN {OFS = FS}以设置输出字段分隔。

NF==10仅查找只有10条记录的行,{$0=$0"0"}1用于重建该行并添加额外的单词。

要写入单独的文件,请使用>重定向运算符

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file

要替换原始文件,请使用mv

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file ; mv output-file input-file

或者,如果您有最新的GNU Awk(自4.1.0发布以来),则可以选择" inplace"文件编辑:

gawk -i inplace -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -r 's/[^\t]+/&/11;t;s/$/\t0/' file

这将自己替换第十一列,否则它会添加一个标签然后0