如何为列添加标题

A.M*_*M16 14 sed cat

我有数据:

7456 7456 0 0 0 2
7463 7463 0 0 1 2
Run Code Online (Sandbox Code Playgroud)

我想添加列标题,所以输出是:

FID IID PAT MAT SEX PHENOTYPE 
7456 7456 0 0 0 2
7463 7463 0 0 1 2
Run Code Online (Sandbox Code Playgroud)

我试过了 echo -e "FID\tIID\tPAT\tMAT\tSEX\tPHENOTYPE" | cat file1 > file2

但这是复制原始文件而不是标题。

sed '1i\FID, IID, PAT, MAT, SEX PHENOTYPE' file1 > file2
Run Code Online (Sandbox Code Playgroud)

有错误

sed: 1: "1i\FID, IID, PAT, MAT,  ...": extra characters after \ at the end of i command
Run Code Online (Sandbox Code Playgroud)

请问有什么建议吗?

Kus*_*nda 17

你的尝试

echo -e "FID\tIID\tPAT\tMAT\tSEX\tPHENOTYPE" | cat file1 > file2
Run Code Online (Sandbox Code Playgroud)

几乎可以正常工作,但cat不会对其标准输入(包含实际标题)做任何事情。以下将起作用:

echo -e "FID\tIID\tPAT\tMAT\tSEX\tPHENOTYPE" | cat - file1 > file2
Run Code Online (Sandbox Code Playgroud)

cat将解释-为标准输入,并echo在添加file1.

替代:

{ echo -e "FID\tIID\tPAT\tMAT\tSEX\tPHENOTYPE"; cat file1; } >file2
Run Code Online (Sandbox Code Playgroud)

或者

( echo -e "FID\tIID\tPAT\tMAT\tSEX\tPHENOTYPE"; cat file1 ) >file2
Run Code Online (Sandbox Code Playgroud)


Jar*_*era 14

这个 GNUsed将文本添加为​​文件的第一行:

sed  -i '1i FID IID PAT MAT SEX PHENOTYPE' test.txt
Run Code Online (Sandbox Code Playgroud)