nscd действительно ненадежен для всего, не просто DNS. Этого определенно стоит избежать, если Вам отчаянно не нужен он по некоторым причинам. Необходимо использовать специализированного демона кэширования DNS, если Вы хотите кэшировать DNS локально (который является хорошей идеей!).
Двумя из моих фаворитов является dnsmasq и dnscache от djbdns.
Современная версия GNU grep, который делает жемчуг regexes, сделает:
grep -P -o '^Result: \K[^.]*'
-o
говорит grep распечатывать только часть строки, которая соответствует. -P
с \K
в regex нулевая ширина, оглядываются утверждение, которое вызывает материал перед \K
не быть частью соответствия (нулевая ширина).
См. также: grep может произвести только указанные группировки то соответствие?
Можно использовать sed
. Как это:
sed -e 's/Result:\(.*\)\..*$/\1/g' file_name
если Вы хотите сохранить результат в том же файле, можно добавить -i
кому: sed
аргументы
Result
к запуску строки (^Result
), и необходимо использовать [^\.]*
в группе, иначе если существует несколько периодов, группа будет соответствовать самому долгому соответствию до прошлого периода. проблемный оператор
– camh
16.11.2011, 15:11
sed -nr 's/^Result:([^.]*).*/\1/p'
.. это решает "вопросы"... btw. "одно возникновение строки "Результат": в начале строки" не исключает возможность Result:
появление где-то в другом месте в строке (это зависит от точно, что он имеет в виду), таким образом помещая ^
на месте благоразумно... (PS, Вам не нужно запаздывание *
, потому что .*
является жадным.
– Peter.O
16.11.2011, 17:00
[\.]
будет соответствовать и '\' и '.'... Выход бессмыслен в [square brackets]
.. все является литеральным между ними..
– Peter.O
16.11.2011, 17:57
<file_name sed -n 's/^Result: \([^.]*\)\..*/\1/p'
<file_name awk '/^Result:.*\./ {sub(/^Result: /,""); sub(/\..*/, ""); print}'
<file_name grep '^Result: .*\.' | sed 's/^Result: //' | sed 's/\..*//'
Если присутствие a .
не требуется, изменение в
<file_name sed -n -e 's/\..*//' -e 's/^Result: //p'
<file_name awk '/^Result: / {sub(/^Result: /,""); print}'
<file_name grep '^Result: ' | sed 's/^Result: //'
См. этот ответ для фона для sed решений.
.
быть требованием. Если это не, awk и grep+sed решения могут легко быть упрощены; sed решение становится менее компактным, но возможно легче читать.
– Gilles 'SO- stop being evil'
17.11.2011, 18:33