- ベストアンサー
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 どなたかわかるかた教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
a=`cat 111.txt` の時点で改行が空白に変わるので、a="444 444" と同じになります。 ファイルの内容で置換したいときは、 sed 's/222/cat 111.txt/e' 1.txt のように、e オプション(コマンド実行)を使います。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
> sh: 1: Syntax error: end of file unexpected ということは、コマンドラインで打ち込んだんじゃ無くて、シェルスクリプトということですよね。 エラーが起こるスクリプト全文を載せて下さい。他の部分に間違いがあります。
補足
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です。 リダイレクトで保存するとエラーがでました。