LoginSignup
nono826
@nono826

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

sedコマンドでファイルの特定文字を別ファイルの中身に置き換えたい

実現したいこと

シェルスクリプト関連の質問になります。
sedコマンドを利用してとあるファイルの特定文字の箇所、別ファイルの中身に置き換えたいと考えております。

イメージですが、

aaaFile

SELECT * 
FROM table
WHERE id = '{1}'
AND version …

上記の {1} の箇所を下記ファイルの中身にそのまま置き換えたいと考えております。

bbbFile

826

最終的に下記のような形にしたいです。

aaaFile

SELECT * 
FROM table
WHERE id = '826'
AND version …

自分で試したこと

下記のようなsedコマンド等で置き換えられないか試行しました。

# sed -e '/{1}/r bbbFile/' aaaFile
SELECT * 
FROM table
WHERE id = '{1}'
826 AND version …
# sed -e 's/{1}/r bbbFile/g' aaaFile
SELECT * 
FROM table
WHERE id = 'r bbbFile'
AND version …

お手数ですがどなたか解決策についてご教授いただけないでしょうか。よろしくお願いします。

0

1Answer

awkコマンドを使えば出来そうな気がする

$ awk 'BEGIN {getline x < "bbbFile"} {sub("{1}", x, $0);print $0}' <aaaFile

↓これでもいけるかも?

$ sed -e '/{1}/`cat bbbFile`/' aaaFile

環境がないので、試せない

1

Comments

  1. @nono826

    Questioner

    awkコマンドの方を試して見たところ解決しました!ご教授いただきありがとうございます!

  2. sが抜けてました。

    sedでもいけます。確認しました。

    $ sed -e 's/{1}/`cat bbbFile`/' aaaFile 
    

Your answer might help someone💌