Bash変数によるsed置換
2023-10-23 07:41:43
質問
Bashスクリプトでsedを使ってテキストファイルの値を変更しようとしているのですが、以下のような行があります。
sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
これは
for
のループになります。なぜうまくいかないのでしょうか?
どのように解決するのですか?
内部の変数
'
の中の変数はBashでは代入されません。文字列置換(Perlに慣れている人なら補間)を行うには、二重引用符を使うように変更する必要があります。
"
を使うように変更する必要があります。
# Enclose the entire expression in double quotes
$ sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp
# Or, concatenate strings with only variables inside double quotes
# This would restrict expansion to the relevant portion
# and prevent accidental expansion for !, backticks, etc.
$ sed 's/draw('"$prev_number"';n_)/draw('"$number"';n_)/g' file.txt > tmp
# A variable cannot contain arbitrary characters
# See link in the further reading section for details
$ a='foo
bar'
$ echo 'baz' | sed 's/baz/'"$a"'/g'
sed: -e expression #1, char 9: unterminated `s' command
さらに読む。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
[解決済み】bashで1つのコマンドでシェル変数にデフォルト値を割り当てる。
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シェルスクリプトによるDockerコンテナ内でのスクリプトの実行
-
[解決済み] bash で "set -o nounset" を使用したときに変数が設定されているかどうかをテストする。
-
[解決済み] find "の結果をカウントするのに最適な方法は何ですか?
-
[解決済み] unset の使用と変数への空の設定
-
[解決済み] Bashでファイル名を一括変更する
-
[解決済み] 接頭辞・接尾辞を使った名前の変更方法について教えてください。
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] bashでファイルが存在するかどうかをテストするためのWhileループ
-
[解決済み] SSH接続をチェックするbashスクリプトを作成するには?
-
[解決済み] Bashで文字列の一文字目を削除する