2

/ usr / share / nmap/nmap-servicesからのポートのみをsedでフィルタリングする必要があります

tcpmux  1/tcp   0.001995        # TCP Port Service Multiplexer [rfc-1078]
compressnet     2/tcp   0.000013        # Management Utility
compressnet     3/tcp   0.001242        # Compression Process
unknown 4/tcp   0.000477
unknown 6/tcp   0.000502
echo    7/tcp   0.004855
unknown 8/tcp   0.000013
discard 9/tcp   0.003764        # sink null
unknown 10/tcp  0.000063
systat  11/tcp  0.000075        # Active Users

(!?([0-9] + / tcp))のようなものを試しましたが、機能しません:なぜですか?

ありがとうございました

4

3 に答える 3

2

これを試してみてください:

grep -oP '\d+(?=/(udp|tcp))' /usr/share/nmap/nmap-services

またはperlで:

perl -lne 'print $& if m!\d+(?=/(udp|tcp))!' /usr/share/nmap/nmap-services

高度な正規表現を前向きに使用します。http://www.perlmonks.org/? node_id= 518444を参照してください。

または高度な正規表現なしのawkあり:

awk '{gsub("/.*", ""); print $2}' /usr/share/nmap/nmap-services

また

awk -F'[ /\t]' '{print $2}' /usr/share/nmap/nmap-services
于 2012-11-15T03:11:14.387 に答える
0

これがAWKを使用した例です

cat /usr/share/nmap/nmap-services | awk '{print $2}' | awk -F\/ '{print $1}'
于 2012-11-15T03:57:21.827 に答える
0

最も単純なのはそうです:

cut -s -d\  -f2 test

あなたもそうすることができます:

sed '/[^ ]* \([^ ]*\).*/ s::\1:; /^$/d' FILE

cutバリアントは、一致しない場合は空の行を出力します。

于 2012-11-15T07:14:24.720 に答える