I'm trying to filter nmap results using grep, awk, and sed to create a report. But I can't get just the "178-36-246-126.static." I imagine that i have to have a parameter "xxx-xx-xxx-xx", using these dashes. I tried deleting the first few columns but it affects the bottom rows(awk '{print $1,$2,$3,$6}').
I tried using grep -A and -B but the number of lines is not static. I tried to use sed but the IP numbers vary. It still has over 8000 lines left so I really need some help. Thanks!
178-36-246-126.static.xxxxxxxxxx.com (178.36.246.126)
PORT STATE SERVICE
80/tcp open http
178-36-246-134.static.xxxxxxxxxx.com (178.36.246.134)
PORT STATE SERVICE
80/tcp open http
443/tcp open https
3389/tcp open ms-wbt-server
178-36-246-145.static.xxxxxxxxxx.com (178.36.246.145)
PORT STATE SERVICE
80/tcp open http
443/tcp open https
178-36-246-147.static.xxxxxxxxxx.com (178.36.246.147)
PORT STATE SERVICE
443/tcp open https
CodePudding user response:
If I understand your question correctly, you want to remove anything after static. on the lines with an IP address. You can change the field separator in awk and then apply pattern matching/replacing for matched lines.
awk 'BEGIN{FS=OFS="."} /^([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}/ {$0=$1 "." $2} 1'
->
178-36-246-126.static
PORT STATE SERVICE
80/tcp open http
178-36-246-134.static
PORT STATE SERVICE
80/tcp open http
443/tcp open https
3389/tcp open ms-wbt-server
178-36-246-145.static
PORT STATE SERVICE
80/tcp open http
443/tcp open https
178-36-246-147.static
PORT STATE SERVICE
443/tcp open https
CodePudding user response:
If I were you I'd modify nmap's output options:
nmap -oG - subnet/subnetmask | awk '$2~/178-36-246-126.static/ && $4~/Ports:/'
Or, even shorter, instead of extracting one hosts information from a subnet scan, just scan that one host with the default output:
nmap 178-36-246-126.static
Or, if all you're trying to achieve is to strip part of the fully qualified domain-name:
nmap subnet/subnetmask | sed 's/\.xxxxxxxxxx\.com//'
