从文件中提取并将详细信息粘贴到另一个文件

Extracting from a file and pasting details to another file

问题是关于从 "nmap non-gui version" 中提取 Oracle Virtual box(第 2 段)的详细信息。我了解 "grep""loops" 的用法并且已经尝试了所有方法但是如果连接了其他系统怎么办同一个网络。我只希望程序找到单词 "(Oracle VirtualBox virtual NIC)" 并提取其上方的所有内容,直到找到空白行。

**

root@PopeyeTheSailorMan:~# nmap 192.168.43.0/24 > Log.txt

**

Starting Nmap 7.60 ( https://nmap.org ) at 2017-11-15 04:08 UTC
Nmap scan report for 192.168.43.1
Host is up (0.0025s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
53/tcp open  domain
MAC Address: 9A:10:94:51:42:ED (Unknown)

***Nmap scan report for 192.168.43.136
Host is up (0.00071s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
443/tcp  open  https
1024/tcp open  kdm
MAC Address: 08:00:27:D3:73:2E (Oracle VirtualBox virtual NIC)***

Nmap scan report for kali (192.168.43.79)
Host is up (0.0000070s latency).
All 1000 scanned ports on kali (192.168.43.79) are closed

Nmap done: 256 IP addresses (3 hosts up) scanned in 16.00 seconds

如果我理解你的问题,这就是你想要的:

awk '/Oracle VirtualBox virtual NIC/' RS= Log.txt

使用您的示例输入:

$ awk '/Oracle VirtualBox virtual NIC/' RS= Log.txt
***Nmap scan report for 192.168.43.136
Host is up (0.00071s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
443/tcp  open  https
1024/tcp open  kdm
MAC Address: 08:00:27:D3:73:2E (Oracle VirtualBox virtual NIC)***

工作原理

  • RS=

    这告诉 awk 一次读取输入的一个段落。

  • /Oracle VirtualBox virtual NIC/

    这告诉 awk 打印任何包含字符串 Oracle VirtualBox virtual NIC.

  • 的段落
    grep -n ^$ Log.txt | sed s/://

会给出空白行号(适合数组)

    grep -n 'Oracle VirtualBox virtual NIC' Log.txt | cut -f1 -d\:

会给出目标的行号

使用数组、循环和 sed 来找到你想要的块

    sed -n '8,19p' Log.txt