Использование сценария bash для записи текущей даты в файл.cfg/text

find. -type f -size 1033c ! -executable | xargs file | grep text

Вентилятор одного вкладыша

0
19.06.2020, 03:10
1 ответ

Оболочка никогда ничего не раскрывает внутри одной строки в кавычках.

Вам придется использовать строку в двойных кавычках для выражения sed:

sed -i "s,^\(example=\).*,\1$(date +%m/%d)," /path/to/config.cfg

В качестве альтернативы можно использовать две строки в одинарных кавычках с подстановкой команды в двойные кавычки между ними:

sed -i 's,^\(example=\).*,\1'"$(date +%m/%d)"',' /path/to/config.cfg

В качестве альтернативы пусть dateвыводит выражение sed:

sed -i "$(date +'s,^\(example=\).*,\1%m/%d,')" /path/to/config.cfg

(но это выглядит немного неловко ).

Я сделал выражение немного короче с помощью обратной -ссылки на example=текст. Я использую ,в качестве разделителя для команды s///в sed, потому что мы имеем дело со строкой в ​​замещающей части, которая содержит символ /(, альтернативой было бы использование %m\\/%dв качестве строки формата с dateдля создания экранированного символа /).

Обратите внимание, что двойные кавычки вокруг подстановки команды не нужны в первом варианте приведенной выше команды, так как все выражение sedзаключено в кавычки. Кроме того, /gв конце команды s///не требуется, так как нельзя ожидать, что шаблон будет совпадать более одного раза, поскольку он привязан к началу строки. Я также удалил --, который вы использовали. Некоторые реализации sedпочти наверняка использовали бы эту строку в качестве резервного суффикса, то есть в качестве аргумента опции -для опции -i(, например. sedв macOS ).

Я использую date +%m/%dдля создания нужного формата даты. Это будет генерировать 06/19для сегодняшней даты. Не хотите ли вы, чтобы в течение дня было заполнено ноль -чисел, используйте %eвместо%d(см.man strftime). По-видимому, не существует стандартного формата для получения месяца без заполнения числа нулями, но если вы используете GNU date, вы можете использовать нестандартный -формат %-m(, т.е. date +%-m/%e, см. man date).

1
18.03.2021, 23:26

Теги

Похожие вопросы