Gerçekten zordur:
İşte benim test ve çıkış var benim
#!/bin/bash
sed -i '' -e 's,xsi:namespace="http://url.example.com",,' $1
için çalışır, bu deneyin. iş gibi görünüyor Bir sürümü üçlü ters eğik çizgi kullanır:
$ bash -c "sed 's,xsi:namespace=\\\"http://url.example.com\\\",,'" \
> <<< 'abc-xsi:namespace="http://url.example.com"-def'
abc--def
$
ilk çifti -c
senaryodaki bir ters eğik çizgi temsil eder; ters eğik çizgi işareti, -c
komut dosyasında çift tırnak işareti temsil eder.
$ 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\",,'
$
Ancak biraz düşünme ve deneme tek eğik yeterli olduğunu göstermektedir: Sen argümanlar bash
geçirilen görmek bash
önce printf "%s\n"
ekleyebilir Ancak
$ 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
$
, nasıl görmek zor tek ters eğik çizgi denerken bunu denemedin.
çift ters eğik çizgiler cevap olmadıklarını Not: düşünmeye değer
$ 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\,,'
$
diğer alternatif (ve ne haifzhan onun answer önerdiklerini temelde), sed
senaryoyu koymaktır - veya bütün sed
komut - çalıştırdığınız bir betiğe. Olumsuz oluşturulan ve/veya temizlenmiş script.sed
alma problemleri olabilir
$ 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
$
: Bu 'kaç ters eğik' sorularını önler.
Komut dizisini kullanmak zorunda kaldım. Informatica sadece işbirliği yapmadı ve diğer forumlarda başka kimse de işe yaramadı. – drum