Как добавить строку с выводом команды, используя ed - PullRequest
2 голосов
/ 08 февраля 2020

Я пишу сценарий оболочки Bourne на Linux и использую ed для добавления текста в конец файла. Я ДОЛЖЕН использовать ed для выполнения этой задачи.

Что мне нужно, чтобы добавленный текст выглядел следующим образом:

Изменено: current_date

Где current_date является выводом команды date

Код, который я использую, таков:

ed -s $arg << END
a
Modified on: !date
.
w $arg
q
END

Очевидно, что вместо вывода даты вместо строки даты будет помещена строка «! date» команда.

Каков наилучший способ достижения sh этой цели?

До сих пор я пытался использовать команды '(.,.) s / RE / REPLACEMENT /' , x и j безрезультатно, и я не вижу команды, которая смогла бы сделать это на странице информации для ed.

1 Ответ

2 голосов
/ 08 февраля 2020

Так же, как вы расширяете $arg в сценарии, вы можете развернуть подстановку команд, которая запускает date.

ed -s $arg <<END
a
Modified on: $(date)
.
w $arg
q
END

Я хотел бы предложить что-то вроде

ed -s $arg <<END
r !date +'Modified on \%F'
w $arg
q
END

также (замените% F на любую строку формата, дублирующую формат вывода по умолчанию), но я не могу понять, что это правильно. Backsla sh не позволяет ed заменить % текущим именем файла, но backsla sh также остается в выходных данных. Я не уверен, как это преодолеть.

...