2

我需要根据文件名递归地向多个文件添加头文件。

所以我试过:

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%??} 而不是名称文件的一部分(%?? 是删除一些结尾字符)。

任何帮助都会很棒。

4

1 回答 1

3

使用双引号:

    sed '1 i\
A;B;C;D;E;F;G;H;'"${i%??}" a_${i} > header_a_${i}

使用 -i 和重定向输出没有任何意义,所以我省略了 -i。另外,我在插入命令之后添加了一个转义的换行符。有些 sed 不需要换行符,但很多都需要。但是,为此使用 sed 似乎很奇怪。相反,只需执行以下操作:

for i in *file; do     
  { echo "A;B;C;D;E;F;G;H;${i%??}"; cat a_${i}; } > header_a_${i}
done
于 2012-06-26T14:02:24.913 回答