Решение Python:
#!/usr/bin/env python
import sys
prefix = ""
with open(sys.argv[1]) as fd:
for line in fd:
new_line = line.rstrip()
if new_line.endswith('#'):
prefix = new_line
else:
new_line = prefix + new_line
print(new_line)
Тестовый запуск:
$ ./append_word.py input.txt
bbb-ccc-cccc#
bbb-ccc-cccc# aasdf asdas asdasa fgdg
bbb-ccc-cccc# asdfa asfdas adfaq asfa
bbb-ccc-cccc# afdaf fafa fafd afafa
bbb-ccc-cccc#
Как это работает это просто. Мы читаем файл построчно, удаляя конечные пробелы или символы новой строки с конца. Мы записываем префикс в каждую строку, если эта строка заканчивается символом #
. Если строка не заканчивается на #
, мы знаем, что эту строку нужно изменить. Наконец, мы печатаем строку независимо от того, была она изменена или нет.
Вложите биты $ {...}
, но сделайте также подумайте, насколько читабельным будет код для будущих читателей.
() { clean_title=${${1:l}//[^a-zA-Z0-9]/-}; printf "$clean_title" } " BLA "
Также совпадение AZ
, вероятно, не имеет большого смысла с учетом более раннего нижнего регистра ...
В zsh
можно вкладывать операторы раскрытия параметров. Вы также можете получить дату с подсказкой%D{%F}
(zsh
также имеет strftime
, встроенную в модуль zsh/datetime
, если вам нужен более подробный и читаемый код ).
filename=${(%):-%D{%F}}-${${1//[^[:alnum:]]/-}:l}