sed:添加一个不寻常的 header 带引号
sed: add an unusual header with quotes
我有以下变量:
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”扩展名的变量同名的文件。
在每个文件中我需要添加以下 header:
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
将相应的 header 添加到每个文件 (gawk,sed) 的正确方法是什么?
您通常需要为 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
我有以下变量:
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”扩展名的变量同名的文件。 在每个文件中我需要添加以下 header:
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
将相应的 header 添加到每个文件 (gawk,sed) 的正确方法是什么?
您通常需要为 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