Bash 将文本文件中的tcpdump输出写入单行

Bash 将文本文件中的tcpdump输出写入单行,bash,grep,tcpdump,Bash,Grep,Tcpdump,我想将文本输出中的所有行连接成一行。 使用以下命令,我可以监视DHCP流量: tcpdump-lni eth0-vvv-s 1500'(udp端口67)和(udp[247:4]=0x63350103))| grep——缓存线-E-i‘客户端id |请求的ip |主机名’ 对于每一个新连接,我会看到3个结果(IP、MAC、主机名),每一个结果都在一条新线上 可以每三个结果写入一行,但只能写入一行并写入一个文件?使用tr删除带-d的换行符。在我的机器上运行并使用en0而不是eth0,我在一行中看到:

我想将文本输出中的所有行连接成一行。 使用以下命令,我可以监视DHCP流量:

tcpdump-lni eth0-vvv-s 1500'(udp端口67)和(udp[247:4]=0x63350103))| grep——缓存线-E-i‘客户端id |请求的ip |主机名’

对于每一个新连接,我会看到3个结果(IP、MAC、主机名),每一个结果都在一条新线上


可以每三个结果写入一行,但只能写入一行并写入一个文件?

使用
tr
删除带-d的换行符。在我的机器上运行并使用en0而不是eth0,我在一行中看到:

$tcpdump-lni en0-vvv-s 1500'((udp端口67)和(udp[247:4]=0x63350103))| grep--line buffered-E-i'客户端id |请求的ip |主机名| tr-d'\n'>output.txt
$cat output.txt
客户端ID选项61,长度7:ether 6c:96:cf:d8:7f:e7请求的IP选项50,长度4:172.31.99.198主机名选项12,长度3:“mbp”
将用stdin的内容覆盖文件。

查看tr。

使用
tr
删除带-d的换行符。在我的机器上运行并使用en0而不是eth0,我在一行中看到:

$tcpdump-lni en0-vvv-s 1500'((udp端口67)和(udp[247:4]=0x63350103))| grep--line buffered-E-i'客户端id |请求的ip |主机名| tr-d'\n'>output.txt
$cat output.txt
客户端ID选项61,长度7:ether 6c:96:cf:d8:7f:e7请求的IP选项50,长度4:172.31.99.198主机名选项12,长度3:“mbp”
将用stdin的内容覆盖文件。

检查tr。

如果我输入“tr-d'\n'”看不到结果。如果您使用
tr-d'\n'>output.txt
,您将不会在cli上看到结果,因为它被重定向到
output.txt
。如果我输入“tr-d'\n'”看不到结果。如果您使用
tr-d'\n'>output.txt
,您不会在cli上看到结果,因为它被重定向到
output.txt