ファイル名に応じて、複数のファイルに再帰的にヘッダーを追加する必要があります。
だから私は試しました:
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を省略しました。また、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