printfを使用してファイルの先頭にリッチテキストを挿入する

printfを使用してファイルの先頭にリッチテキストを挿入する

テキストファイルの先頭に特定の形式のコンテンツを追加する必要があります。調べたBashで複数のテキストファイルの先頭と末尾にテキストを追加する方法しかし、私の状況にどのように適応するのかわかりません。

パスワード

printf 'Anything\tyou\twant\tto\tadd' 0a . x | ex printf.csv

期待される出力

$ head -n 1 printf.csv;
Anything     you    want   to    add

注:私はprintf解決策を好みます。

ベストアンサー1

の場合はex次のようになります。

printf '%b\n' 0a 'Anything\tyou\twant\tto\tadd' . x | ex -s printf.csv

または:

printf '0a\nAnything\tyou\twant\tto\tadd\n.\nx\n' | ex -s printf.csv

パラメータによって認識されるエスケープシーケンスは、フォーマットパラメータ%bのエスケープシーケンスとは異なります。前者は標準でありecho、後者は標準Cに似ています(多くのprintf実装ではこれを拡張しますが)。それとは違いはありませんが、(少なくとも移植性が必要な場合は)パラメータに\tそれを作成する必要があります。\11\011%b

別のオプションは、拡張に%sksh93スタイルの引用符を使用することです。$'...'\t

printf '%s\n' 0a $'Anything\tyou\twant\tto\tadd' . x | ex -s printf.csv

サポートされている場合(少なくともksh93、zsh、bash、FreeBSD sh、busybox ash)、これらの引用$'...'は通常、型パラメータのように標準Cエスケープ(拡張を含む)をサポートしますprintf%bまたはecho

おすすめ記事