Как заключить каждую строку в файл в двойные кавычки с помощью sed? - PullRequest
23 голосов
/ 02 июля 2011

Вот что я пробовал: sed -i 's/^.*/"$&"/' myFile.txt

Он ставит $ в начале каждой строки.

Ответы [ 4 ]

29 голосов
/ 02 июля 2011

вот оно

sed 's/\(.*\)/"\1"/g'
12 голосов
/ 03 июля 2011

короче

sed 's/.*/"&"/'

без пробелов

sed 's/ *\(.*\) *$/"\1"/'

пропустить пустые строки

sed '/^ *$/d;s/.*/"&"/'
4 голосов
/ 02 июля 2011

Вы почти правильно поняли. Попробуйте эту слегка модифицированную версию:

sed 's/^.*$/"&"/g' file.txt
2 голосов
/ 18 сентября 2014

Вы также можете сделать это без группы захвата:

sed 's/^\|$/"/g'

'^' соответствует началу строки, а '$' соответствует концу строки.

| - это «Чередование», оно просто означает «ИЛИ».Он должен быть экранирован здесь [1], поэтому на английском языке ^\|$ означает «начало или конец строки».

«Замена» этих символов - это хорошо, он просто добавляет текст в начало вконец, так что мы можем заменить " и добавить g в конце для глобального поиска, который будет соответствовать обоим сразу.

[1] К сожалению, оказывается, что |не является частью «Базовых регулярных выражений» POSIX, но является частью «расширенных» функциональных возможностей, которые могут быть скомпилированы с флагом REG_ENHANCED, но не включены по умолчанию в OSX, поэтому вы безопаснее с соответствующей базовой группой захвата, такой как s/^\(.*\)$/"\1"/

Скромный пирог для меня сегодня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...