Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要根据文件名递归地向多个文件添加头文件。
所以我试过:
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%??} 而不是名称文件的一部分(%?? 是删除一些结尾字符)。
任何帮助都会很棒。
使用双引号:
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