それは本当にトリッキーです:
は、それが私のために
#!/bin/bash
sed -i '' -e 's,xsi:namespace="http://url.example.com",,' $1
はここに私のテストおよび出力の作品、これを試してみてください。動作しているようです1つのバージョンは、三重のバックスラッシュを使用しています。
$ bash -c "sed 's,xsi:namespace=\\\"http://url.example.com\\\",,'" \
> <<< 'abc-xsi:namespace="http://url.example.com"-def'
abc--def
$
最初のペアは-c
スクリプトでバックスラッシュを表します。バックスラッシュクォートは-c
スクリプトの二重引用符を表します。あなたはbash
に渡される引数を参照してくださいbash
前printf "%s\n"
を追加することができます。
$ printf "%s\n" bash -c "sed 's,xsi:namespace=\\\"http://url.example.com\\\",,'" \
> <<< 'abc-xsi:namespace="http://url.example.com"-def'
bash
-c
sed 's,xsi:namespace=\"http://url.example.com\",,'
$
しかし、少し思考と実験を単一のバックスラッシュが十分であることを示しています
$ printf "%s\n" bash -c "sed 's,xsi:namespace=\"http://url.example.com\",,'" <<< 'abc-xsi:namespace="http://url.example.com"-def'
bash
-c
sed 's,xsi:namespace="http://url.example.com",,'
$ bash -c "sed 's,xsi:namespace=\"http://url.example.com\",,'" <<< 'abc-xsi:namespace="http://url.example.com"-def'
abc--def
$
しかし、それはどのように見るのは難しいですあなたは単一のバックスラッシュを試したときにこれを試しませんでした。二重のバックスラッシュが答えではないことを
注:
$ bash -c "sed 's,xsi:namespace=\\"http://url.example.com\\",,'" <<< 'abc-xsi:namespace="http://url.example.com"-def'
sed: 1: "s,xsi:namespace=\http:/ ...": unterminated substitute in regular expression
$ printf "%s\n" bash -c "sed 's,xsi:namespace=\\"http://url.example.com\\",,'" <<< 'abc-xsi:namespace="http://url.example.com"-def'
bash
-c
sed 's,xsi:namespace=\http://url.example.com\,,'
$
について考えても価値が別の方法としては、(それはhaifzhanが彼のanswerに示唆するものは基本的です)、sed
スクリプト置くことである - または全部をsed
コマンド - 実行するスクリプトに追加します。欠点は、作成および/またはクリーンアップscript.sed
を得ることの問題かもしれ
$ cat script.sed
s,xsi:namespace="http://url.example.com",,
$ sed -f script.sed <<<'abc-xsi:namespace="http://url.example.com"-def'
abc--def
$ bash -c "sed -f script.sed" <<<'abc-xsi:namespace="http://url.example.com"-def'
abc--def
$
:これは、「どのように多くのバックスラッシュ」の質問を避けることができます。
私はスクリプトルートを使用しなければなりませんでした。 Informaticaはちょうど協力していなかったし、他のフォーラムの誰もそれを動かさなかった。 – drum