В книге Уильяма Шоттса, есть такой пример. Файл содержащий имена OS, их версии и даты выхода (вывод сокращен для экономии места). Файл distr.txt (разделитель табуляция):
SUSE 10.2 12/07/2006
Fedora 10 11/25/2008
SUSE 11.0 06/19/2008
Ubuntu 8.04 04/24/2008
в примере используется конструкция sed, которая меняет формат вывода дат с MM/ДД/ГГГГ на ГГГГ-MM-ДД, которая вне сценария выполняется корректно и меняет формат:
sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/' distr.txt
вывод становится таким:
SUSE 10.2 2006-07-12
Fedora 10 2008-25-11
SUSE 11.0 2008-19-06
Ubuntu 8.04 2008-24-04
Так же в книге приведен сценарий sed, который на основе файла distr.txt создает отчет:
1 i\
\
Linux Distributions Report\
s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
Данный сценарий сохранен под именем distr.sed
При его выполнении
sed -f distr.sed distr.txt
Должен появится отчет вот такого вида:
Linux Distributions Report
SUSE 10.2 2006-12-07
FEDORA 10 2008-11-25
SUSE 11.0 2008-06-19
UBUNTU 8.04 2008-04-24
Но у меня, он выполняется не корректно, даты мне меняются, и в сам отчет попадает часть сценария sed
Linux Distributions Report
s/([0-9]{2})/([0-9]{2})/([0-9]{4})$/3-1-2/
SUSE 10.2 12/07/2006
FEDORA 10 11/25/2008
SUSE 11.0 06/19/2008
UBUNTU 8.04 04/24/2008