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を省略しました。また、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
于 2012-06-26T14:02:24.913 に答える