grep IP와 포트 번호를 한 줄로 작성

grep IP와 포트 번호를 한 줄로 작성

grep 및 cut을 사용하여 다음과 같이 nmap 스캔 결과의 IP 및 포트를 반환했습니다.

192.168.1.221
80
443
192.168.1.223
25

원하는 출력:

192.168.1.221:80
192.168.1.221:443
192.168.1.223:25

답변1

awk '/\./{ip = $0; next}; {print ip":"$0}'

이 입력이면 충분합니다.

nmap프로그래밍 방식 처리에 적합한 형식으로 출력하도록 선택할 수 있습니다 xml.

답변2

다음 명령을 사용하여 다음 작업을 수행할 수 있습니다 awk.

awk '$1 ~ /[0-9]\.[0-9]+/{ip=$1; val=0; next } /^[0-9]+$/{port=$1; if(!(val++)); print ip":"port}' infile

답변3

Bash 스크립트를 사용하는 솔루션:

for i in $(<input); do [ ${#i} -le 3 ] && printf '%s:%s\n' $ip $i || ip=$i; done

입력 문자열 길이가 3자보다 길면 IP 주소를 변수에 저장하고, ip:port그렇지 않으면 인쇄합니다. input입력 파일로 바꾸십시오 . (포트 번호가 3자를 초과하는 경우 더 큰 값을 선택하여 일치시킬 수 있습니다)

또 다른:

while read i; do [ ${i/.} != $i ] && ip=$i || printf "%s:%s\n" $ip $i; done <input

IP 주소 ip에 점이 포함되어 있으면 변수에 할당되고 ip:port그렇지 않으면 인쇄됩니다.

답변4

나는 다음 방법으로 그것을했다

sed -n '/^[0-9]\{3\}\./,+1p' filename| sed "N;s/\n/:/g"

산출

192.168.1.221:80
192.168.1.223:25

관련 정보