gpt4 book ai didi

linux - 使用 awk(或熟悉的)将多行合并为 1 行

转载 作者:行者123 更新时间:2023-12-03 09:53:40 24 4
gpt4 key购买 nike

我需要将 nmap 输出的多行合并成一行

来自:

Nmap scan report for example.com
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
1720/tcp open h323q931
5432/tcp open postgresql
Nmap scan report for example.com
22/tcp open ssh
80/tcp open http
81/tcp open hosts2-ns
111/tcp open rpcbind
1720/tcp open h323q931
Nmap scan report for example.com
22/tcp open ssh
111/tcp open rpcbind
1720/tcp open h323q931
Nmap scan report for example.com
22/tcp open ssh

收件人:

Nmap scan report for example.com
22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 1720/tcp open h323q931 5432/tcp open postgresql
Nmap scan report for example.com
22/tcp open ssh 80/tcp open http 81/tcp open hosts2-ns 111/tcp open rpcbind 1720/tcp open h323q931
Nmap scan report for example.com
22/tcp open ssh 111/tcp open rpcbind 1720/tcp open h323q931
Nmap scan report for example.com
22/tcp open ssh

对于 1 台主机,应该有 2 行。第一个是从 Nmap 扫描开始的……另一行是开放端口信息。我看到很多关于使用 awk 将多行合并为 1 行的问题,但无法想出一些东西。

最佳答案

为什么不这样:

awk '$0~"Nmap"{if(output!="")print output;print;output=""}$0!~"Nmap"{output=output""$0" "}END{if(output!="")print output}'

如果 $0 有“Nmap”,打印该行。如果没有,跟踪正在发生的事情,然后在新的 Nmap 时打印它。

END{} block 负责触发未打印的内容。请注意,您正在寻找 Nmap 来打印一些东西。还要注意条件 $0!~"Nmap" 以避免缓冲第一行。

关于linux - 使用 awk(或熟悉的)将多行合并为 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com