sed:添加带引号的异常标题

时间:2015-04-08 11:20:22

标签: awk sed gawk

我有以下变量:

STR1="CD45RA_naive"
STR2="CD45RO_mem"
STR3="CD127_Treg"
STR4="IL17_Th_stim_MACS"
STR5="IL17_Th17_stim"
names=($STR1 $STR2 $STR3 $STR4 $STR5)

和名称与变量名称相同的文件" .bed"延期。 在每个文件中,我需要添加以下标题:

track name='enhancer region' description='${names[$i]}'"

我的想法如下:

for ((i=0; i<${#names[@]}; i++))
do
    echo "output/annotation/"${names[$i]}".bed"

    sed -i '' "1 i \track name='enhancer region' description='"${names[$i]}"'" "output/annotation/"${names[$i]}".bed"

done

但是我收到错误:

sed: 1: "1 i \track name='enhanc ...": extra characters after \ at the end of i command

为每个文件添加相应的标题(gawk,sed)的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您通常需要为i命令插入的行在其自己的行上。换句话说,您需要在反斜杠后添加换行符。例如:

$ cat input
line 1
$ sed -e '1i\
foo' input
foo
line 1
$ sed -e '1i\ foo' input
sed: 1: "1i\ foo
": extra characters after \ at the end of i command