Если Вы ищете кэширующийся сервер DNS, думают о dnsmasq или pdnsd. Оба просты настроить с некоторыми текстовыми файлами.
Однако, если Вы ищете реальный сервер DNS, связываете, промышленный стандарт, но это может быть довольно громоздким для конфигурирования.
Некоторые альтернативы были бы tinydns или maradns, которые более просты настроить, чем связывают.
Они все доступны как пакеты на Debian.
Вы теряете пробелы, когда Вы расширяетесь $line
. Поместите двойные кавычки вокруг своего переменного расширения, и Вы сохраните пробелы:
$ cat dept.dat | while read line
> do
> echo "$line"
> echo "$line" | cut -c 12-29"
> done
department: customer service section: A
customer service
department: marketing section: A
marketing
department: finance section: A
finance
Можно также достигнуть чего-то подобное использование sed
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | sed -e 's/.*: \(.*\) .*/\1/'
done
Вы могли также использовать awk
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | awk '{sub(/.*nt: /,""); sub(/ .*/,""); print }'
done
Вы могли также использовать grep
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | grep -oP '(?<=: ).*(?= )'
done
Примечание: grep
решение принимает последнюю версию grep
это включает PCRE (поддержка регулярного выражения Perl).
Основное различие в этих решениях по сравнению с. cut
это, они соответствуют на основе шаблонов где cut
решение принимает более твердую структуру (определенные позиции символа) к входным данным.
Альтернатива использованию cut
должен использовать awk
substr
функция:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | awk '{print substr($0,13,16)}'
done
IFS
к пустой строке, так, чтобы ведущий пробел не был отброшен, и определение-r
флаг кread
, так, чтобы обратные косые черты не были обработаны/отброшены. Это: вместоwhile read line
, Я рекомендовал бы писатьwhile IFS= read -r line
. Это является более подробным, но это гарантирует, что никакого искажения не произойдет. (Если строка не содержит пустые байты...) – ruakh 18.08.2013, 10:27