grep IPとポート番号を1行で書く

grep IPとポート番号を1行で書く

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

関連情報