sed
コマンドで複数の-e
句を作成する配列から変数を作成しています。bash変数を使用して複数の-e節をsedに渡す
結果の変数のようなものです:
sedArgs="-e 's/search1/replace1/g' -e 's/search2/replace2/g' -e 's/search3/replace3/g'"
しかし、私は、私はエラーにsed: -e expression #1, char 1: unknown command: ''
を取得引数としてこれをsedを呼び出すしようとしたとき、私は、次の方法をsedを呼び出すようにしようとしました:
cat $myFile | sed $sedArgs
cat $myFile | sed ${sedArgs}
cat $myFile | sed `echo $sedArgs`
cat $myFile | sed "$sedArgs"
cat $myFile | sed `echo "$sedArgs"`
と同じエラーが発生します。
UPDATE - 重複質問
同定されているように、これは「引用符展開」の問題である - 私はそれが特定の何かsed
だと思ったが、duplicate question that has been identifiedは、右のトラックに私を置きます。
私はとしてsedArgs
文字列を作成することで問題を解決するために管理:
sedArgs="-e s/search1/replace1/g -e s/search2/replace2/g -e s/search3/replace3/g"
し、それを呼び出す:完璧に動作
cat $myFile | sed $sedArgs
。
私はトリプルプレイのアドバイスを取って無駄を追い払ったcat
!
sed $sedArgs $myFile
も完全に機能します。代わりに、単純な文字列の
どうして?あなたが何をしようとしているかを示す新しい質問を投稿し、サンプル入力と期待される出力を完了すると、正しい方法でそれを行うことができます。また、googleの 'UUOC'と' '常にシェル変数を引用する ''と' '廃止されたバッククッキー ''。 –
@ ed-mortonこれは、問題を効率的に、私がやっているすべてのものを混乱させることなく実証するために、私が達成しようとしていることの単純化です。私の実際のプロジェクトでは、 '$ sedArgs'変数は、ファイル名の配列から導かれた一群のロジックを介して構築されています。配列内の各ファイルはお互いを参照し、私の仕事は、ユーザーのフィードバックを提供しながら、各ファイル内の他のすべてのファイルへのすべての参照を効率的に置き換えることです。おそらくこれを達成するための多くの方法がありますが、私は他のすべてが働いており、上記の問題は私の唯一のポイントです。 –