Как заменить «одиночные» апострофы на «двойные» апострофы с помощью sed [дубликат]

Пусть другие не попадутся в ту же ловушку. На самом деле все нормально. Из раздела тестирования документации authd:

Выполните « telnet localhost auth » и введите два порта, разделенные запятой. Два выбранных порта должны иметь внешний адрес localhost или 127.0.0.1, а также соответствующий локальный адрес. В противном случае будет возвращена ошибка NO-USER.

4
10.03.2018, 23:32
3 ответа

С помощью tr(, если вы хотите сделать это глобально во всем файле):

tr "'" '"' <infile >outfile

Делать

sed 's/'/"/'

В основном у вас есть sed 's/', за которым следует /"/', который представляет собой косую черту и незакрытую строку в двойных кавычках.

С

sed s/\'/\"/

у вас нет такой проблемы.

Если вам удобнее процитировать sedвыражение (в данном случае оно не нужно ), сделайте

sed 's/'"'"'/"/'

Это sed 's/', за которым следует"'"(двойная одинарная кавычка ), за которой следует '/"/'.

Также обратите внимание, что если вы хотите эмулировать trв sed, то есть если вы хотите выполнять транслитерацию отдельных символов, то использование y///будет гораздо более эффективным, чем использованиеs///g(примечания. там /gтам):

sed y/\'/\"/
5
27.01.2020, 20:48
  echo "don't forget that" | sed 's/\x27/\"/'
5
27.01.2020, 20:48

Нет необходимости цитировать sedвыражение целиком:

echo \' | sed s/\'/\"/
1
27.01.2020, 20:48

Теги

Похожие вопросы