Как вложить каждую строку в файл в двойные кавычки с sed?
Это то, что я пробовал: sed -i 's/^.*/"$&"/' myFile.txt
Он помещает $в начало каждой строки.
Ответ 1
здесь
sed 's/\(.*\)/"\1"/g'
Ответ 2
меньше
sed 's/.*/"&"/'
без пробелов
sed 's/ *\(.*\) *$/"\1"/'
пропустить пустые строки
sed '/^ *$/d;s/.*/"&"/'
Ответ 3
Ты почти все понял. Попробуйте слегка измененную версию:
sed 's/^.*$/"&"/g' file.txt
Ответ 4
Вы также можете сделать это без группы захвата:
sed 's/^\|$/"/g'
'^' соответствует началу строки, а "$" соответствует концу строки.
| - это "чередование", это просто означает "ИЛИ". Это нужно избегать здесь [1], поэтому на английском языке ^\|$ означает "начало или конец строки".
"Замена" этих символов в порядке, он просто добавляет текст к началу в конце, поэтому мы можем заменить " и добавить g в конец для глобального поиска, чтобы он совпал сразу.
[1] К сожалению, оказывается, что | не является частью POSIX "Основные регулярные выражения", но является частью "расширенной" функциональности, которая может быть скомпилирована с помощью знака REG_ENHANCED, но по умолчанию не используется в OSX, поэтому вы более безопасны с соответствующей базовой группой захвата, такой как s/^\(.*\)$/"\1"/