我有一个包含一些数据的文件,想通过Bash脚本以表格格式保存数据

我有一个包含一些数据的文件,想通过Bash脚本以表格格式保存数据,bash,shell,Bash,Shell,以表格格式保存数据 文件输出数据如下所示: Nmap scan report for 192.168.X.X MAC Address: 1C:xx:0D:ff:62:9A (Unknown) Running: Linux 3.X|4.X Nmap scan report for 192.168.X.X MAC Address: 1C:xx:0D:88:59:F6 (Unknown) Running: Linux 3.X|4.X Nmap scan report for 192.168.X.X M

以表格格式保存数据

文件输出数据如下所示:

Nmap scan report for 192.168.X.X
MAC Address: 1C:xx:0D:ff:62:9A (Unknown)
Running: Linux 3.X|4.X
Nmap scan report for 192.168.X.X
MAC Address: 1C:xx:0D:88:59:F6 (Unknown)
Running: Linux 3.X|4.X
Nmap scan report for 192.168.X.X
MAC Address: 1C:aa:0D:2C:64:XX (Unknown)
Running: Linux 3.X|4.X
Nmap scan report for 192.168.X.X
MAC Address: 84:A9:3E:XX:1C:ss (Unknown)
Running: Linux 3.X|4.X
Nmap scan report for 192.168.X.X
MAC Address: cc:D5:5E:xx:6B:6B (Unknown)
Running: Linux 3.X|4.X
Nmap scan report for 192.168.X.X
MAC Address: xx:B6:xx:92:0C:1D (Unknown)
Running: Linux 3.X|4.X
但要保存数据,如(以表格格式):


请帮助我使用Bash脚本。

我会选择
awk
脚本:

awk '
    BEGIN {
        print("Nmap Scan Report for |    MAC Address     | Running");
    }
    /^Nmap scan report for/ {
        ip=$5;
    }
    /^MAC Address:/ {
        mac=$3;
    }
    /^Running:/ {
        $1="";
        os=$0;
        printf("%-21s| %-19s|%s\n", ip, mac, os);
    }
    ' nmap-report.txt

Perl版本,使用了现在鲜为人知的特性(当您可以使用
printf
时,对于如此简单的东西,这可能被授予了过高的技能,但我觉得很新奇。)

#/usr/bin/env perl
使用警告;
严格使用;
我的($ip,$mac,$host);
而(){
如果(/^n映射(.*$/)的扫描报告{
$ip=$1;
}elsif(/^MAC地址:(.*)$/){
$mac=$1;
}elsif(/^Running:(.*)$/){
$host=$1;
写
}否则{
“格式错误的输入。\n”;
}
}
格式标准输出顶部=
--------------------------------------------
正在运行的| MAC地址|的Nmap扫描报告
.
格式标准输出=

@但当我使用您的代码时,发现表格式如下:它在每一行中显示| MAC Address | Running>的Nmap扫描报告。我需要这个名称作为表名,数据应该是上面提到的实际值。@Aniket:然后只需相应地修改awk程序,如果不起作用,就提出一个新问题。
awk '
    BEGIN {
        print("Nmap Scan Report for |    MAC Address     | Running");
    }
    /^Nmap scan report for/ {
        ip=$5;
    }
    /^MAC Address:/ {
        mac=$3;
    }
    /^Running:/ {
        $1="";
        os=$0;
        printf("%-21s| %-19s|%s\n", ip, mac, os);
    }
    ' nmap-report.txt
$ perl report.pl nmap.txt
--------------------------------------------
Nmap Scan Report for |    MAC Address     | Running
192.168.X.X          | 1C:xx:0D:ff:62:9A  | Linux 3.X|4.X
192.168.X.X          | 1C:xx:0D:88:59:F6  | Linux 3.X|4.X
192.168.X.X          | 1C:aa:0D:2C:64:XX  | Linux 3.X|4.X
192.168.X.X          | 84:A9:3E:XX:1C:ss  | Linux 3.X|4.X
192.168.X.X          | cc:D5:5E:xx:6B:6B  | Linux 3.X|4.X
192.168.X.X          | xx:B6:xx:92:0C:1D  | Linux 3.X|4.X