Использование awk
только с конструкциями, определенными POSIX,
awk 'match($4, /Gene:(.+)\:/){ $4=substr($4, RSTART, RLENGTH-1) }1' file
Чтобы сделать вывод более аккуратным, направьте вывод на | column -t
, который будет разделять ваши столбцы табуляцией. Если вы не уверены в позиции Gene:genename
в своей строке, измените awk
для поиска шаблона в любом месте строки и измените 4-й столбец на требуемое значение. Изменение с $4
на$0
(всей строки )должно работать нормально.
awk 'match($0, /Gene:(.+)\:/){ $4=substr($0, RSTART, RLENGTH-1) }1' file
На основе вашего файла зоны forward.example.com
ваш файл зоны reverse.example.com
должен выглядеть следующим образом:
$TTL 604800
$ORIGIN 137.168.192.in-addr.arpa.
@ IN SOA example.com. root.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS example.com.
5 IN PTR example.com.
1 IN PTR wintop.example.com.
В обратных зонах не должно быть записей A
и AAAA
, за исключением, возможно, связующих записей в делегировании подзоны -.
В исходном файле обратной зоны указано, что IP-адрес 192.168.137.10 будет home-server.example.com
, а 192.168.137.11 — wintop.example.com
, что несовместимо с вашей прямой зоной.
А заявлять адрес локального хоста IPv6 ::1
просто глупо. В зоне реверса вообще не действует, в зоне форвард просто неправильно. Когда клиент спрашивает «Где находится home-server.example.com
?», ваша зона переадресации будет иметь ответ сервера :«Для IPv4 это 192.168.137.5, для IPv6 это ::1». Тогда клиент подумал бы :«Хм. Я поддерживаю IPv6 -, как практически все современные ОС, начиная с Windows Vista, так что это имя было просто причудливым способом указать на… меня? В конце концов, чтобы получить к нему доступ, нужно установить любое внешнее сетевое соединение! Я могу обработать запрос сам!"...И если бы запрос действительно не исходил от home-server.example.com
, вероятно, это было бы не то, что вы хотели.
Помните, что DNS-сервер просто доставляет записи клиенту без какой-либо интерпретации; клиент - это тот, кто фактически использует информацию.
Возможно, вам также придется подумать, какое из них будет каноническим именем 192.168.137.5 :home-server.example.com
или просто example.com
? Возможно, вам придется сделать одно из имен псевдонимом для другого (записи CNAME ); в противном случае у вас могут возникнуть проблемы с успешной проверкой SSL/TLS-сертификатов для обоих имен.
Итак, ваша передняя зона, возможно, должна выглядеть так:
$TTL 604800
$ORIGIN example.com.
@ IN SOA example.com. root.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS example.com.
@ IN A 192.168.137.5
home-server IN CNAME example.com.
wintop IN A 192.168.137.1