Как соответствовать одинарной кавычке в sed

Вы можете не только с SSH. Вас может заинтересовать VNC . Но вам нужен графический интерфейс?

Кроме того, как насчет использования MATLAB на вашем собственном компьютере? Если это проблема с лицензией, вы должны попробовать GNU Octave , свободный / libre, безвозмездно и кросс-платформенный.

33
задан tzot 16 October 2008 в 00:17
поделиться

2 ответа

Можно или использовать:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

или

'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)

я использовал unicode имена персонажей. ОБРАТНЫЙ SOLIDUS чаще всего известен как обратная косая черта.

В последнем случае, Вы закрываете свой апостроф, затем кавычка оболочки Ваш апостроф с обратной косой чертой, затем открываете другой апостроф для остальной части текста.

46
ответ дан 27 November 2019 в 16:21
поделиться

Как отмечено в комментариях к вопросу, это не действительно о sed, но как включать кавычку в заключенную в кавычки строку в оболочке (например, удар).

Для разъяснения предыдущего ответа необходимо выйти из кавычки с обратной косой чертой, но Вы не можете сделать этого в рамках единственно заключенного в кавычки выражения. Из страницы справочника удара:

символы Включения в одинарных кавычках сохраняет литеральное значение каждого символа в кавычках. Одинарная кавычка не может произойти между одинарными кавычками, даже когда предшествуется обратной косой чертой.

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

Так, для ответа на исходный вопрос того, как к одинарной кавычке выражение 'нечто', Вы сделали бы что-то вроде этого:

sed -e '...'\''foo'\''...'

(где '...' остальная часть sed выражения).

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

sed -e "...'foo'..."

[Как пример потенциального кошмара обслуживания первого (одинарная кавычка) подход, отметьте, как подсветка синтаксиса StackOverflow окрашивает кавычки, обратные косые черты и другой текст - это определенно не корректно.]

37
ответ дан 27 November 2019 в 16:21
поделиться