Позвольте мне быть конкретным: НЕ использовать переменную в первой команде sed, а назначать вывод sed переменной в оболочке bash, ТО затем использовать переменную во второй команде sed, чтобы добавить переменную строку в конец строки в целевом файле.

В bash shell это возможно ... mvstr = 'sed s/^#.../&/'

Зачем это делать? Попытка удалить шаблон поиска "# ..." в начале строки в файле и добавить к концу строки в том же файле.

$ MVSTR может быть #spx, #loc, #con Вторая команда sed? s/"$ MVSTR"/$;\"/w строка заканчивается на;" и напиши файл

Есть ли одна строка для этого в 8000 файлов?

1 ответ1

0

Написание строк sed "-e" не всегда легко.

попробуйте это на тестовом файле:
MVSTR="#loc";sed -re "s/^$MVSTR(.*)$/\1$MVSTR/" filename

или вместо этого используйте заменяющую строку в качестве литерала:
sed -re "s/^(#loc)(.*)$/\2\1/" filename

(Непроверенные)

Обратите внимание, что $ равняется "концу строки" в первой части команды sed 's'. И чтобы bash заменил MVSTR внутри процитированной команды sed, он должен быть в двойных кавычках, а не только для защиты его от других "вмешательств" bash. \1 и \2 - это "автоматические переменные", которые содержат содержимое первой и второй скобок в поисковой части.

Кстати, у http://tldp.org есть пара хороших руководств по Bash ... В них вы найдете примеры того, как сделать это в любом количестве файлов. Ищите команду find .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .