С sed:
sed -e "/^.\./s/^/0/" file.txt
Шаблон /^.\./
ищет любой символ и буквальную точку в начале строки ^
, и если это совпадает, s
ub заменить начало строки нулем, фактически добавляя ноль к началу.
Выражение sed s /. \ {0 \} / 0 /
несколько странно, оно соответствует нулю или более копий чего-либо и заменяется нулем. Шаблон, конечно, будет соответствовать в каждой позиции строки, но поскольку s ///
заменяет только первое совпадение, он работает так, как вы предполагали. Тем не менее, странный способ сделать это.
Или с awk аналогичное регулярное выражение будет работать для сопоставления строки, но мы можем использовать substr
:
awk 'substr($0, 2, 1) == "." {$0 = "0" $0} 1' file.txt
Сначала мы проверяем, является ли второй символ точкой, а затем добавляем ноль вперед строки, если так. Последний вызывает действие по умолчанию - печать строки после любых изменений.
Удалите пробел между +
и спецификацией формата при вызове date
:
date +'\%d-\%m-\%y'
Когда вы ставите пробел после +
, date
получает два аргумента +
и '\%d-\%m-\%y'
.
Поскольку вы используете GNU date
, который не ожидает каких-либо других аргументов командной строки после спецификации формата, вы получаете сообщение об ошибке «дополнительный операнд» для строки '\%d-\%m-\%y'
.