Это было бы несколько проще, если бы вы занимались только внутренними полями. (т. е. не первое или последнее поле в строке ). Но вы хотите посмотреть на все поля. Итак, у меня есть решение, из-за которого создается впечатление, что мы не занимаемся последнее поле в каждой строке:
sed -e 's/$/\t/' -e 's/[^\t]*_[^\t]*\t//g' -e 's/\t$//'
Это
_
и удаляет их и следующую вкладку, ничем их не заменяя. Это работает с n -м полем (, т. е. с последним полем в исходной строке ). потому что шаг 1 добавил вкладку в конце. Здесь есть функция (, о которой, как я знаю, вы не просили, но вы оцените ее, когда увидите, что она доступна )что он сохраняет пустые поля:
$ cat file3 The brown jumps the dog. quick fox over lazy Four and_ years score seven ago... $ (the_above_command) file3 The brown jumps the dog. quick fox over lazy Four years score seven ago...
П.С. В зависимости от того, какая у вас версия sed
, вам может потребоваться ввести в команду фактические вкладки вместо \t
. Или, если вы используете bash, вы можете использовать $'…'
для командных строк sed
, содержащих \t
.
Возможно, сеть работала не полностью (, поэтому DNS-запрос был потерян ), или это была просто случайная потеря пакетов (, такое случается, особенно в сети Wi-Fi ). С первым вы можете справиться, подождав немного дольше, чтобы запустить приложение; последнее в значительной степени неизбежно.
Некоторые подходы, которые могут вам помочь:
Исправьте приложение. Я подозреваю, что это не вариант, иначе вы бы уже сделали это.
Поместите запись для 0.0.0.0 в /etc/hosts
. Затем он должен разрешиться через «файлы», что будет практически мгновенно. Конечно, для этого нужно дать 0.0.0.0 имя, которое может или не может изменить поведение приложения. Если это работает для вас, это самый простой вариант.
Если вам не нужен DNS на коробке, полностью отключите его, удалив его из /etc/nsswitch.conf
.
Запустите локальный кеш DNS, который можно настроить как авторитетный для 0.0.0.in -addr.arpa. Затем он может быстро вернуть NXDOMAIN для 0.0.0.0. Есть несколько программ, предназначенных для обеспечения локального кэширования, которые могут это сделать. Например, dnsmasq достаточно популярен. Есть и другие, такие как Unbound, в зависимости от необходимых вам функций.
По крайней мере, с glibc вы можете изменить время ожидания и повторную попытку, поместив что-то вроде options timeout:2 attempts:4
в /etc/resolv.conf
. Если вы уменьшите время ожидания, вы, вероятно, захотите увеличить количество попыток, потому что иногда DNS-серверу может потребоваться некоторое время, чтобы разрешить его (, но как только он это сделает, он должен быстро ответить из своего кеша ).
Вы можете написать свой собственный модуль NSS для быстрого hosts
отказа при поиске 0.0.0.0. По крайней мере, для glibc вы можете найти инструкции в glibc manual §29 .