フォーマットのためにsed出力をprintfにパイプする方法は?

フォーマットのためにsed出力をprintfにパイプする方法は?

風洞データを処理するためにTecplotを使用していますが、Tecplotへの入力には変数を指定するための特定の形式が必要です。各変数は二重引用符で囲まれています"Variable Name"。問題は二重引用符を取得するのは簡単ではないということです。printf ' "%s" 'このような効果を出すことができる記事を見つけました。しかし、printfは入力内容に非常に面倒です。sedを使用する前にデータファイルから変数を転送することはできませんでしたが、使用することを説明するprintf別の記事が見つかりましたprintf ' "%s" ' $(sed ...)。この構造はうまくいきますが、私の問題の解決策は半分です。次に、出力を使用してプレースホルダ(XYZXYZXYZ)をに変換したいとprintf思います。sedprintf ' "%s" ' $(sed ...)'s

sed s/XYZXYZXYZ/` printf ' "%s" ' $(sed -n 1,265p Run-0020) `/ ../../wt/wt-layout_A.dat
sed: -e expression #1, char 12: unterminated `s' command

説明したように、XYZXYZXYZをprintfの出力にどのように変更しますか?

ベストアンサー1

printfコマンドを二重引用符で囲みます。$(…)コマンド代替構文を使用してsedコマンドに一重引用符を追加すると、次のようになります。

sed 's/XYZXYZXYZ/'"$(printf ' "%s" ' $(sed -n '1,265p' Run-0020))"/ ../../wt/wt-layout_A.dat

printfコマンドから最初の空白文字を削除してそれをに変更できますprintf '"%s" '

おすすめ記事