有效地将字符串附加到unix中的每个文件行

时间:2016-01-06 23:46:45

标签: file unix append

我有一个制表符分隔文件,我想在每行的每个第一个字段之前追加字符串“chr”,除了第一行是标题行(并以“#”字符开头)。< / p>

例如,第二行是:

1       51476   snp_1_51476     T       C       100     PASS

我希望它是:

chr1       51476   snp_1_51476     T       C       100     PASS

对于拥有大约1000万行的文件,unix实现此目的的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

只需使用awk

awk 'BEGIN{FS=OFS="\t"}NR>1 {$1="chr"$1}1' file

除第一行外,每行添加“chr”。然后,1触发每一行的打印。

否则,sed

sed '2,$s/^/chr/' file

这会将后缀chr添加到从第二行开始的所有行。添加-ised -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