sed:使用两个值向文件中添加列

sed:使用两个值向文件中添加列,sed,Sed,我需要向已经存在的以制表符分隔的文件中添加一个列名为的列(相同的值)。 我不想创建新文件等 A B C D 1 1 1 1 1 1 1 1 我需要一个新列,其标题Z在所有行中仅包含一个值2 A B C D Z 1 5 1 2 2 0 6 1 0 2 我怎样才能用sed完成它 我的想法是sed“1iz”| sed“s/$/&\t2/”。但是1li当然会添加一个标题。最简单的方法是: sed '1 s/$/\tZ/; 1! s/$/\t2/' filename 由于数据是严格的选项卡分隔的,我

我需要向已经存在的以制表符分隔的文件中添加一个列名为的列(相同的值)。 我不想创建新文件等

A B C D
1 1 1 1
1 1 1 1
我需要一个新列,其标题Z在所有行中仅包含一个值2

A B C D Z
1 5 1 2 2
0 6 1 0 2
我怎样才能用sed完成它

我的想法是
sed“1iz”| sed“s/$/&\t2/”
。但是1li当然会添加一个标题。

最简单的方法是:

sed '1 s/$/\tZ/; 1! s/$/\t2/' filename
由于数据是严格的选项卡分隔的,我也可以看到这是通过awk实现的:

awk -F '\t' 'BEGIN { OFS = FS } NR == 1 { $(NF + 1) = "Z" } NR > 1 { $(NF + 1) = 2 } 1' filename
有人可能会说,这在概念上更为清晰。但最终,两者都做了同样的事情。1

1除非有空行,在这种情况下,awk版本只会将新字段写入该行,而不是在新字段后面加一个选项卡。

最简单的方法是:

sed '1 s/$/\tZ/; 1! s/$/\t2/' filename
由于数据是严格的选项卡分隔的,我也可以看到这是通过awk实现的:

awk -F '\t' 'BEGIN { OFS = FS } NR == 1 { $(NF + 1) = "Z" } NR > 1 { $(NF + 1) = 2 } 1' filename
有人可能会说,这在概念上更为清晰。但最终,两者都做了同样的事情。1

1除非有空行,在这种情况下,awk版本只会将新字段写入该行,而不是在新字段后面加一个选项卡。

最简单的方法是:

sed '1 s/$/\tZ/; 1! s/$/\t2/' filename
由于数据是严格的选项卡分隔的,我也可以看到这是通过awk实现的:

awk -F '\t' 'BEGIN { OFS = FS } NR == 1 { $(NF + 1) = "Z" } NR > 1 { $(NF + 1) = 2 } 1' filename
有人可能会说,这在概念上更为清晰。但最终,两者都做了同样的事情。1

1除非有空行,在这种情况下,awk版本只会将新字段写入该行,而不是在新字段后面加一个选项卡。

最简单的方法是:

sed '1 s/$/\tZ/; 1! s/$/\t2/' filename
由于数据是严格的选项卡分隔的,我也可以看到这是通过awk实现的:

awk -F '\t' 'BEGIN { OFS = FS } NR == 1 { $(NF + 1) = "Z" } NR > 1 { $(NF + 1) = 2 } 1' filename
有人可能会说,这在概念上更为清晰。但最终,两者都做了同样的事情。1

1除非有一个空行,在这种情况下,awk版本只会将新字段写入该行,而不是在新字段后面加一个选项卡