0

ファイルをgrepして2行の情報を探し、それらの行のみを出力する方法を知っている人なら誰でも。ネットワーク 10.1.1.x - 10.1.254.x で nmap スキャンを実行しており、ポート 22 が開いているすべての IP を探しています。Nmap はファイルを作成しますが、次の 3 種類のエントリを持つエントリが含まれています

Nmap scan report for 10.1.0.1
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  filtered  ssh 

Nmap scan report for 10.1.0.2
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh 

Nmap scan report for 10.1.0.3
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh 

Nmap scan report for 10.1.0.4
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  filtered  ssh 

ファイルをgrepして1行目と5行目を返し、5行目にopenが含まれている場合にのみ探しています。

私は試しました:grep -e '10.1' -e 'open' file.txt
これは私が望むものをネットにしますが、すべての1行目と1行目と5行目を返します

私は試しました:sed -e '/10.1./,/open/!d' file.txt
しかし、これは使用するのと同じものを返します: cat file.txt

も試しawk '/10/ && /open/' file.txt
ましたが、何も返されません

助言がありますか

4

3 に答える 3

0

を使用するgnu awkと、これを行うことができます

awk '/10\.1/ && /open/' RS="\n\n" file
Nmap scan report for 10.1.0.2
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh
Nmap scan report for 10.1.0.3
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh

これにより、レコード サイズが 1 行から 1 セクションに変更されます。そうすれば、欲しいものを手に入れることができます。.または、それ以外の場合は任意の文字を意味し、そうでないこともエスケープする必要があります.

ポートも検索するには、次のように追加できます。

awk '/10\.1/ && /open/ && /22\/tcp/' RS="\n\n" file

これは、ほとんどのバージョンで動作するawkバージョンです

awk '/10\.1/ {p=1} p {s=s"\n"$0} /filtered/ {p=0;s=""} /open/ {print s,$0;p=0;s=""}' file
于 2013-10-11T05:29:32.790 に答える
0

あなたが試すことができますgnu awk

awk '/10\.1\./ && /open/' RS="" file5行ごとに空白行で分割する場合に使用できます

于 2013-10-11T06:03:26.110 に答える
0
$ awk 'BEGIN{RS="";FS=OFS="\n"} $5~/open/{ print $1, $5 }' file
Nmap scan report for 10.1.0.2
<br>22/tcp  open  ssh
Nmap scan report for 10.1.0.3
<br>22/tcp  open  ssh

または、必要に応じて:

$ awk 'BEGIN{RS="";ORS="\n\n";FS=OFS="\n"} $5~/open/{ print $1, $5 }' file
Nmap scan report for 10.1.0.2
<br>22/tcp  open  ssh

Nmap scan report for 10.1.0.3
<br>22/tcp  open  ssh
于 2013-10-12T01:49:45.090 に答える