Я пытаюсь заменить все ссылки на \'
с '
в файлеНайти и заменить: »
я использовал вариации:. sed -e s/\'/"\'"/g file.txt
Но они всегда заменить every.single (single) .quote
Любая помощь была бы принята с благодарностью.
Я пытаюсь заменить все ссылки на \'
с '
в файлеНайти и заменить: »
я использовал вариации:. sed -e s/\'/"\'"/g file.txt
Но они всегда заменить every.single (single) .quote
Любая помощь была бы принята с благодарностью.
Не уверен, что это лучшее решение, я мог бы сделать это следующим образом:
sed "s/[\]'/\"\'\"/g" file.txt
(ввод символа обратной косой черты в диапазоне символов, так что не мешает следующей цитате, и защитить двойные кавычки)
Или просто продлив синтаксис, без кавычек, но с использованием почти такой же трюк:
sed -e s/[\\]\'/"\'"/g file.txt
подход пытается сохранить как можно больше «одно-quotednes s»СЕПГ команды, как это возможно:
sed 's/\\'"'"'/\'/g'
Просто отводящей \
с \\
и получать апостроф в команду с '"'"'
: первый апостроф заканчивает команду до сих пор, то есть двойные кавычки одного цитата ("'"
) и, наконец, открывающая одиночная кавычка для остальной части команды.
В качестве альтернативы, дважды процитировать всю команду и избежать как обратный слэш и одиночные кавычки:
sed "s/\\\'/\'/g"
Полезно знать, я пробовал такие вещи, как '\\\ '', пытаясь убедить его (выяснив, что он избежит как обратной косой черты, так и одиночной цитаты, но это не сработало. Спасибо за понимание! – Corey
@Corey Это действительно работает для меня с 'sed 's/\\\'/\ '/g" ', я добавлю это. –
Странно - клянусь, я пробовал это, и это не сработало. Возможно, мои цитаты были из место. #sednoob – Corey
Правильный синтаксис:
$ echo "foo'bar" | sed 's/'\''/\'/'
foo'bar
Каждый скрипт (SED, AWK, что угодно) должны всегда заключать в одинарные кавычки, и вы просто нам одинарные кавычки, чтобы остановить/перезапустить разграничители сценариев, вырваться в оболочку для минимальной части скрипта, которая абсолютно необходима, в этом случае достаточно долго, чтобы использовать \'
. Вам нужно вырваться в оболочку, чтобы указать, что '
, потому что в отношении правил оболочки никакой скрипт, заключенный в '
, может содержать '
, даже если вы попытаетесь его избежать.
echo "foo'bar" | gawk '{gsub(/\47/,"\\'")}1'
foo'bar
Трудная часть здесь состоит в том, чтобы заменить одну цитату амперсандом. Сначала для того, чтобы сделать одиночную кавычку управляемой, используйте ее восьмеричный код здесь \ 47, а затем выйдя из амперсанда двумя косыми чертами. И все внезапно становится выполнимым :)
Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснения! – kayess
Вы хотите использовать двойные кавычки взамен, как в '' '? –
Двойные кавычки были моей попыткой получить его для отображения ' verbatim (как строка вместо синтаксического анализа как регулярное выражение). Думаю, они, вероятно, не нужны. – Corey
А, ладно. В вашей версии они не появятся, но если вы укажете всю команду, они будут. –