Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Вставка текста с помощью sed в начале строки дает ошибку

Автор вопроса: GerhardОтветов: 1

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

sed: -e выражение #1, char 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

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

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

  • Что ж, это должно сработать. Не могли бы вы опубликовать вывод sed --version или sed -v, чтобы узнать, какой у вас sed? KamilCuk 06.01.2020
  • СЭД (GNU-СЭД) 4.7 Gerhard 06.01.2020
  • Я думаю, что Windows делает что-то странное с ^. Если вы не можете избавиться от Windows (пожалуйста), попробуйте поместить скрипт в файл и использовать sed -f file y.txt tripleee 06.01.2020

msys2quotessed

Ответы

Ответ 1 · рейтинг 1 · RavinderSingh13

EDIT (решение для cygwin): Попробуйте использовать cygwin sed, только что протестированный в системе, и он отлично работает из командной строки. При использовании ' одинарных кавычек с sed я получаю ту же ошибку, что и OP, но при использовании " в sed я могу получить правильное поведение sed (ожидаемый, добавить " перед каждой строкой)

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


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

sed -f file Input_file


Альтернативное решение (протестировано и работает на cygwin): У меня нет с собой cygwin, поэтому я не могу протестировать его, хотя упомянутое вами решение отлично работает для BASH. Не могли бы вы попробовать использовать другой подход один раз? Я только что протестировал это решение и на cygwin, и там оно работало нормально (комментарий EDIT).

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы