我需要将来自不同命令的所有信息“转储”到 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 替换“空格”
例如 sed "s//\n/#"
其中 # 表示要删除的空间,但这显然不是要走的路。必须有另一种方式来实现我想要的。我不仅需要格式化 ifconfig 命令。
最佳答案
你正在做的事情可以简单地完成:
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
你不会有那个问题。
关于regex - 将显示的终端输出保存到格式良好的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275580/