如何附加到制表符分隔文本文件中列数较少的行?
How to append to the lines with fewer columns in a tab separated text file?
我有一个制表符分隔的文本文件。有些行有 10 列,有些行有 11 列。我想在 10 列行的最后一行添加一个额外的列,值为 0。我该怎么做?
既然你提到了追加,你可以awk
如下
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=10=]=[=10=]"0"}1' input-file
-F $'\t'
负责制表符分隔部分,BEGIN {OFS = FS}
用于设置输出字段分隔。
NF==10
仅查找只有 10 条记录的行,{[=18=]=[=18=]"0"}1
用于重建添加了额外单词的行。
要写入单独的文件,请使用 >
重定向运算符 as
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=11=]=[=11=]"0"}1' input-file > output-file
要替换原始文件,请使用 mv
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=12=]=[=12=]"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{[=13=]=[=13=]"0"}1' input-file
这可能适合您 (GNU sed):
sed -r 's/[^\t]+/&/11;t;s/$/\t0/' file
这会将第 11 列替换为自身,否则会添加一个制表符,然后 0
。
我有一个制表符分隔的文本文件。有些行有 10 列,有些行有 11 列。我想在 10 列行的最后一行添加一个额外的列,值为 0。我该怎么做?
既然你提到了追加,你可以awk
如下
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=10=]=[=10=]"0"}1' input-file
-F $'\t'
负责制表符分隔部分,BEGIN {OFS = FS}
用于设置输出字段分隔。
NF==10
仅查找只有 10 条记录的行,{[=18=]=[=18=]"0"}1
用于重建添加了额外单词的行。
要写入单独的文件,请使用 >
重定向运算符 as
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=11=]=[=11=]"0"}1' input-file > output-file
要替换原始文件,请使用 mv
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{[=12=]=[=12=]"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{[=13=]=[=13=]"0"}1' input-file
这可能适合您 (GNU sed):
sed -r 's/[^\t]+/&/11;t;s/$/\t0/' file
这会将第 11 列替换为自身,否则会添加一个制表符,然后 0
。