2016-11-30 2 views
1

Я пытаюсь заменить все ссылки на \' с ' в файлеНайти и заменить: »

я использовал вариации:. sed -e s/\'/"\'"/g file.txt

Но они всегда заменить every.single (single) .quote

Любая помощь была бы принята с благодарностью.

+0

Вы хотите использовать двойные кавычки взамен, как в '' '? –

+0

Двойные кавычки были моей попыткой получить его для отображения ' verbatim (как строка вместо синтаксического анализа как регулярное выражение). Думаю, они, вероятно, не нужны. – Corey

+1

А, ладно. В вашей версии они не появятся, но если вы укажете всю команду, они будут. –

ответ

1

Не уверен, что это лучшее решение, я мог бы сделать это следующим образом:

sed "s/[\]'/\"\'\"/g" file.txt 

(ввод символа обратной косой черты в диапазоне символов, так что не мешает следующей цитате, и защитить двойные кавычки)

Или просто продлив синтаксис, без кавычек, но с использованием почти такой же трюк:

sed -e s/[\\]\'/"\'"/g file.txt 
+0

Это, казалось, получило работу, спасибо !!!!! – Corey

+0

эти одинарные кавычки - это ад! –

+0

Да - я немного нуб, когда дело доходит до командной строки: P Еще раз спасибо за вашу помощь !! – Corey

1

подход пытается сохранить как можно больше «одно-quotednes s»СЕПГ команды, как это возможно:

sed 's/\\'"'"'/\'/g' 

Просто отводящей \ с \\ и получать апостроф в команду с '"'"': первый апостроф заканчивает команду до сих пор, то есть двойные кавычки одного цитата ("'") и, наконец, открывающая одиночная кавычка для остальной части команды.

В качестве альтернативы, дважды процитировать всю команду и избежать как обратный слэш и одиночные кавычки:

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

Полезно знать, я пробовал такие вещи, как '\\\ '', пытаясь убедить его (выяснив, что он избежит как обратной косой черты, так и одиночной цитаты, но это не сработало. Спасибо за понимание! – Corey

+0

@Corey Это действительно работает для меня с 'sed 's/\\\'/\ '/g" ', я добавлю это. –

+0

Странно - клянусь, я пробовал это, и это не сработало. Возможно, мои цитаты были из место. #sednoob – Corey

1

Правильный синтаксис:

$ echo "foo'bar" | sed 's/'\''/\'/' 
foo'bar 

Каждый скрипт (SED, AWK, что угодно) должны всегда заключать в одинарные кавычки, и вы просто нам одинарные кавычки, чтобы остановить/перезапустить разграничители сценариев, вырваться в оболочку для минимальной части скрипта, которая абсолютно необходима, в этом случае достаточно долго, чтобы использовать \'. Вам нужно вырваться в оболочку, чтобы указать, что ', потому что в отношении правил оболочки никакой скрипт, заключенный в ', может содержать ', даже если вы попытаетесь его избежать.

0
echo "foo'bar" | gawk '{gsub(/\47/,"\\'")}1' 

foo'bar 

Трудная часть здесь состоит в том, чтобы заменить одну цитату амперсандом. Сначала для того, чтобы сделать одиночную кавычку управляемой, используйте ее восьмеричный код здесь \ 47, а затем выйдя из амперсанда двумя косыми чертами. И все внезапно становится выполнимым :)

+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснения! – kayess