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