2016-12-24 55 views

回答

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 
+0

如果我运行这个命令它会修改文件?还是应该保存这个命令的输出?因为当我正好粘贴这个命令时,它开始在bash上显示内容 –

+0

@RaminZahedi:参考我的更新,告诉你如何保存到一个新文件 – Inian

+0

其实我不想保存到一个新文件,我想修改这个文件。如果第一个命令只是修改输入文件,为什么它会将内容输出到shell? –

0

这可能为你工作(GNU SED):

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

这与itsself取代第十一列,否则它增加了一个选项卡,然后0

相关问题