Вставка текста с помощью sed в начале строки дает ошибку - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь изменить файл с помощью sed, но получаю ошибку, которую не понимаю:

sed: -e выражение # 1, символ 0: нет предыдущего регулярного выражения

Команда:

sed -e 's/^/"asset\//' example.txt

Файл примера:

joe
john
peter

sed из msys2:

which sed

sed является внешним: C: \ msys64 \ usr \ bin \ sed.exe

При добавлении текста в конец каждой строки, как и ожидалось, работает следующее:

sed -e 's/$/",/' y.txt

Джо ",
Джон",
Питер ",

Я в растерянности, чтобы понять, что здесь не так.

1 Ответ

1 голос
/ 06 января 2020

РЕДАКТИРОВАТЬ (решение на cygwin): Попробуйте выполнить на cygwin sed, только что протестирован в системе, и он работал нормально из командной строки. При использовании ' одинарных кавычек с sed я получаю ту же ошибку, что и OP, но при использовании " в sed я могу получить правильное поведение sed (ожидаемое, добавить " перед каждой строкой)

sed -E "s/^/\"/"  Input_file


EDIT2 (взяты из комментариев tripleee): Вы также можете сохранить свою команду sed в файл с именем file с помощью команды s/^/\"/, затем выполните код sed, выполнив тестирование, успешно протестировав его с помощью cygwin sed.

sed -f file Input_file


Alternate Решение (протестировано и работает на Cygwin): У меня нет Cygwin, поэтому я не смог протестировать его, хотя упомянутое решение отлично работает для BASH. Не могли бы вы попробовать следовать другому подходу один раз? Я только что проверил это решение на Cygwin, и оно работало там нормально (комментарий РЕДАКТИРОВАТЬ).

sed 's/\(.*\)/"\1/' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...