将显示的输出从终端保存到文件格式

时间:2015-12-14 20:01:51

标签: regex linux bash

我需要将来自不同命令的所有信息“转储”到bash中的文件中。当我在终端输入命令时,它显示格式非常好并且可读。例如,我有这个命令

ifconfig -a | grep  "inet\|lo\|eth\|wlan"

我希望在我执行此操作的文件中输出

echo $(ifconfig -a | grep  "inet\|lo\|eth\|wlan") >> filename.txt

但是当我打开 filename.txt 时,一切都是 像这样

eth0 Link encap:Ethernet HWaddr # inet addr:#Bcast:# Mask:# inet6 addr: # Scope:Link eth0:1 Link encap:Ethernet HWaddr # inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host

但我希望它看起来像这样的终端输出

eth0 Link encap:Ethernet 
HWaddr # 
inet addr:# 
Bcast:#
Mask:# 
inet6 addr: #
Scope:Link 
eth0:1 Link encap:Ethernet 
HWaddr # 
inet addr:127.0.0.1 
Bcast:127.255.255.255 
Mask:255.0.0.0 lo Link 
encap:Local 
Loopback inet addr:127.0.0.1 
Mask:255.0.0.0 
inet6 addr: ::1/128 Scope:Host

有可能吗?我一直在尝试使用sed命令用\ n替换“space” 例如sed "s/ /\n/#"其中#表示要删除的空间,但这显然不是可行的方法。必须有另一种方式来达到我想要的目的。它不仅需要ifconfig命令我需要格式化。

1 个答案:

答案 0 :(得分:3)

您正在做的事情可以通过以下方式完成:

ifconfig -a | grep  "inet\|lo\|eth\|wlan" >> filename.txt

grep  "inet\|lo\|eth\|wlan" <<<"$(ifconfig -a)" >> filename.txt

当前代码中“不同”输出的原因是因为所有空格都丢失了。如果你这样做:

echo "$(ifconfig -a | grep  "inet\|lo\|eth\|wlan")" >> filename.txt

你不会有这个问题。