我有一个制表符分隔的文本文件。有些行有10列,有些行有11列。我想在10个列的最后一行中添加一个额外的列,其值为0.我该怎么做?
答案 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
。