• ベストアンサー

linuxのsedコマンド変数置換の質問です

はじめまして。 要点だけになってしまいますが 教えていただきたいことがあってトピしました。 この構文では動きませんが僕がやりたいことは こういうイメージです。 111.txt 444 444 1.txt 111 222 333 444 a=`cat 111` echo $a 結果 444 444 1.txt | sed 's/222/$a/g'          ↑ ↑     置換対象 変数 word を $a に収まっている文字列で置換します。 結果 111 444 444 333 444 どなたかわかるかた教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

a=`cat 111.txt` の時点で改行が空白に変わるので、a="444 444" と同じになります。 ファイルの内容で置換したいときは、 sed 's/222/cat 111.txt/e' 1.txt のように、e オプション(コマンド実行)を使います。

ok764
質問者

補足

sed 's/222/cat 111.txt/e' 1.txt 結果 ok sed 's/222/cat 111.txt/e' 1.txt > 333.txt 結果↓ Syntax error: redirection unexpected sh: 1: Syntax error: end of file unexpected osはdebian(おそらく最新)のi386です。 リダイレクトで保存するとエラーがでました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

> sh: 1: Syntax error: end of file unexpected ということは、コマンドラインで打ち込んだんじゃ無くて、シェルスクリプトということですよね。 エラーが起こるスクリプト全文を載せて下さい。他の部分に間違いがあります。

関連するQ&A