Документация по$GENERATE
дает следующий синтаксис:
$GENERATE start-stop[/step] lhs[{offset[,width[,type]]}] rr-type rhs[{offset[,width[,type]]}]
где rr-type
— CNAME, DNAME, A, AAAA, NS, PTR,...
Следовательно, ваша линия:
$GENERATE 1-100 host$.example.com. IN A 10.20.45.$
вместо этого должно быть:
$GENERATE 1-100 host$.example.com. A 10.20.45.$
Странно, что bind
не выдал никаких сообщений об ошибках/предупреждениях по этому поводу.
Более подробное решение:
echo "scott name1;tiger name2;elephant name3;mouse name4;bla1 name5;bla2 name6" \
| tr ';' '\n' | grep "scott" | cut -d ' ' -f 2
Сsed
:
$ echo "scott name1;tiger name2;elephant name3;mouse name4;bla1 name5;bla2 name6" \
| sed -n 's/\(^\|.*;\)scott \([^;]*\).*/\2/p'
name1
или с "тигром":
$ echo "scott name1;tiger name2;elephant name3;mouse name4;bla1 name5;bla2 name6" \
| sed -n 's/\(^\|.*;\)tiger \([^;]*\).*/\2/p'
name2
sed -n
отключить автоматическую печать пространства шаблона s/
замена \(^\|.*;\)
соответствует началу строки ^
или любым символам, за которыми следует точка с запятой .*;
в качестве первой группы захвата с\(...\
)scott
соответствует слову «scott», за которым следует пробел \([^;]*\)
вторая группа захвата, соответствует любым символам, не являющимся -точками с запятой (часть, которую мы хотим).*
соответствует любым следующим символам /\2/
заменить второй группой захвата p
соответствие печати