Часто встречается задача обработки конфигурационных файлов.
К сожалению, для чтения этих файлов не подходят команды r и R, по той причине, что они читают файл не в буфер, а в выходной поток. Кроме того, они не понимают символа `~'. По этой причине мы будем читать конфиг командой s с модификатором e
.
Формат конфигурационного файла прост:
В прошлом примере мы переименовывали файлы переименованные в номер inode, сейчас мы доделаем этот скрипт, что-бы он читал данные из конфигурационного файла.
Пример 4.14. Пример конфигурационного файла.
$ cat /home/doc/.add_ext.conf #comment "XML document text" .xml# "HTML document text" .html #комментарий с пробелами # комментарий "PNG image data" .png "MP3 file" .mp3 "ASCII text" .txt "JPEG image data" .jpg
Мы загрузим конфиг в область удержания, и после его очистки будем подгружать его к каждому результату работы команды file. Вот сам скрипт:
Пример 4.15. Добавление расширения из конфигурационного файла.
#!/bin/sed -rnf 1 { x s|.*|cat ~/.add_ext.conf|e s/\#.*$//mg s/^\s*\n// s/^\s+//mg s/\s+$//mg s/\n+/\n/g s/"\s+/" /g p x } /^[0-9]+$/ { s//file &/e G s/^([0-9]+): (.*).*"\2" ([^\n]+)(\n.*)?$/mv -v \1 \1\3/ep }
Для исключения комментариев я использую выражение
/\#.*$/
в многострочном режиме (используется модификатор m
). Обратите внимание на выражение
/(\n.*)?$/
в последней команде s - это хвост базы из конфига, которого может и не быть.
Вы можете обсудить этот документ на форуме. Текст предоставляется по лицензии GNU Free Documentation License (Перевод лицензии GFDL).
Вы можете пожертвовать небольшую сумму яндекс-денег на счёт 41001666004238 для оплаты хостинга, интернета, и прочего. Это конечно добровольно, однако это намного улучшит данный документ (у меня будет больше времени для его улучшения). На самом деле, проект часто находится на грани закрытия, ибо никаких денег никогда не приносил, и приносить не будет. Вы можете мне помочь. Спасибо.