我有一个制表符分隔文件,我想在每行的每个第一个字段之前追加字符串“chr”,除了第一行是标题行(并以“#”字符开头)。< / p>
例如,第二行是:
1 51476 snp_1_51476 T C 100 PASS
我希望它是:
chr1 51476 snp_1_51476 T C 100 PASS
对于拥有大约1000万行的文件,unix实现此目的的有效方法是什么?
答案 0 :(得分:1)
只需使用awk
:
awk 'BEGIN{FS=OFS="\t"}NR>1 {$1="chr"$1}1' file
除第一行外,每行添加“chr”。然后,1
触发每一行的打印。
否则,sed
:
sed '2,$s/^/chr/' file
这会将后缀chr
添加到从第二行开始的所有行。添加-i
即sed -i '2,$s/^/chr/' file
将进行替换。
要对当前目录中的每个文件执行此操作,请说:
for file in *
do
awk 'BEGIN{FS=OFS="\t"}NR>1 {$1="chr"$1}1' file > tmp_file && mv tmp_file file
done