我需要根据文件的名称递归地将标题添加到多个文件中。
所以我尝试过:
for i in *file
do
sed -i '1 i \A;B;C;D;E;F;G;H;${i%??}' a_${i} > header_a_${i}
done
问题是反映文件名称的变量没有扩展,在标题中我有$ {i%??}而不是名称文件的一部分(%??是删除一些结束字符)。
任何帮助都会很棒。
答案 0 :(得分:3)
使用双引号:
sed '1 i\
A;B;C;D;E;F;G;H;'"${i%??}" a_${i} > header_a_${i}
使用-i和重定向输出没有任何意义,所以我省略了-i。另外,我在insert命令后添加了一个转义的换行符。有些sed不需要换行符,但很多都行。然而,使用sed似乎很奇怪。相反,只需:
for i in *file; do
{ echo "A;B;C;D;E;F;G;H;${i%??}"; cat a_${i}; } > header_a_${i}
done