От info regex
:
3.2 The Match-any-character Operator (`.') ========================================== This operator matches any single printing or nonprinting character except it won't match a: newline if the syntax bit `RE_DOT_NEWLINE' isn't set. null if the syntax bit `RE_DOT_NOT_NULL' is set.
Это не ясно для меня, Вы, строки потребности, содержащие только, сообщают или открываются? Если так, используйте: grep
:
nmap | grep -E "report|open"
sed
:
nmap | sed '/report\|open/!d'
если отчет и открытый вместе
grep
:
nmap | grep report | grep open
sed
:
nmap | sed '/report.*open\|open.*report/!d'
Вместо того, чтобы выполнять последующую обработку с grep, попытайтесь передать --open
опция к Nmap. Это скроет все закрытые или фильтрованные порты. Можно использовать -oG
или -oA
опции произвести "grepable" результаты, также. Вот пример, который делает то, что я думаю, что Вы ищете:
nmap -p 25 --open -oA smtp-servers-%y%m%d 192.168.15.0/24
Результаты были бы в smtp-servers-20120607.nmap
, smtp-servers-20120607.gnmap
, и smtp-servers-20120607.xml
. Можно добраться, IP-адреса для открывают серверы SMTP как так:
awk '/\<25/open/tcp/ {print $2}' smtp-servers-*.gnmap
При реальной необходимости в этом всем в одном конвейере Вы могли бы сделать это как так:
nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'
Вам нужен канал обоим grep
вызовы:
nmap ... | grep report | grep open
Или, так как Вы отметили с awk
, просто информативно:
nmap ... | awk '/report/ && /open/'
И sed
:
nmap ... | sed '/report/!d;/open/!d'
sed
вариант перестанет работать. это удалит и отчет и откроет строки, очевидно, потому что открытый не очень сообщает и наоборот. Также grep | grep
и grep -e -e
не подобны. Сначала каждый будет соответствовать только строкам, содержащим отчет, и открытый, второй очень или только сообщит, что любой только открывает любого оба вместе.
– rush
07.06.2012, 15:34
grep -e -e
, но для sed, как я понимаю, OP хочет и отчет и открытый на строке, sed сделает это правильно.
– Kevin
07.06.2012, 16:01