質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

2回答

470閲覧

shell の cat で出力した中身を sed を使って書き換えたい

tuioku

総合スコア42

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

0クリップ

投稿2022/09/30 04:59

下記の場合に private.pem の中身を @ に位置する部分に書き換えたいのですがうまくいきません。
どうすればいいでしょうか?

cat private.pem | sed -e "s|PRIVATE_KEY: .*$|PRIVATE_KEY: @|g" ./docker-compose.yaml

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuioku

2022/09/30 05:32

awk とかでもできるかもしれないですね。
int32_t

2022/09/30 05:38

./docker-compose.yaml の中の PRIVATE_KEY: の後に private.pem の内容を埋め込みたい、という意味ですか?
tuioku

2022/09/30 05:43

ご返信ありがとうございます。 はい。そうですね。
guest

回答2

0

二重引用符の中ではバッククォート(もしくは$(~~))が使えます。

sh

1sed -e "s|PRIVATE_KEY: .*$|PRIVATE_KEY: `cat private.pem`|g" ./docker-compose.yaml

投稿2022/09/30 13:28

otn

総合スコア84542

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuioku

2022/10/02 00:41

sed: 1: "s|PRIVATE_KEY: .*$|PRIV ...": unescaped newline inside substitute pattern こういうエラーが出てしまうみたいですね。。。
tuioku

2022/10/02 00:48

たぶん、鍵の中身が改行も含まれていて、それをエスケープしないとダメみたいですね。 one line で書くのは厳しそうですね。。。
otn

2022/10/02 06:01

改行をどうしたいのでしょうか?削除であれば、cat private.pem の代わりに tr -d '\n' < private.pem です。
guest

0

GNU sed の場合(e コマンドを利用)。

bash

1$ sed --version 2sed (GNU sed) 4.8 3 4$ sed -e 's|PRIVATE_KEY: .*$|echo PRIVATE_KEY:; cat private.pem|e' ./docker-compose.yaml

投稿2022/09/30 05:45

編集2022/09/30 05:49
melian

総合スコア19771

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuioku

2022/09/30 05:50 編集

macOS Monterey ありがとうございます。 実行した結果、下記のエラーなってしまいました。。。 sed -e "s|PRIVATE_KEY: .*$|echo 'PRIVATE_KEY:'; cat private.pem|e" ./docker-compose.yaml sed: 1: "s|PRIVATE_KEY: .*$|echo ...": bad flag in substitute command: 'e'
melian

2022/09/30 05:49

おそらく、そちらでお使いの sed コマンドが GNU 製ではないのでしょう。。。
melian

2022/10/02 02:12

macOS でしたら Homebrew(brew コマンド)で GNU 版の sed をインストールできるかと思います。 $ brew install gnu-sed ※ gsed という名前でインストールされます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問