2013-04-22 7 views
25

Próbuję zastąpić wszystkie cudzysłowy w łańcuchu pojedynczymi cudzysłowami. tutaj moja ekspresja:Zamień wszystkie cudzysłowy na pojedyncze cudzysłowy

echo "<a href=\"#\" id=\"resendActivationMailLink\">here</a>" | sed "s/\"/'/" 

niestety tylko pierwszy podwójny cudzysłów otrzymuje: S

<a href='#" id="resendActivationMailLink">here</a> 

jakieś pomysły?

Odpowiedz

55

Trzeba przekazać g flagę sed:

sed "s/\"/'/g" 
+10

Aby to zapamiętać, należy wpisać 'g' dla' global'. – RichieHindle

+0

'echo '' Dzień dobry wkręcony" "| sed 's/"/ \\"/g'' – YumYumYum

32

Można użyć tr tutaj zwięzły i mniej podając głowy:

tr '"' "'" 
+1

+1 Świetna alternatywa i defenetly lepiej niż sed. – Zounadire

3

To może pracować dla Ciebie:

sed "y/\"/'/" file 
+0

Powtórzył plik w wierszu poleceń, w jaki sposób zmusić go do zmiany samego pliku? –

+1

@JasonBourne można dodać przełącznik '-i', aby edytować plik inplace, np.' Sed -i "y/\"/'/ "file' – potong