regex - 将显示的终端输出保存到格式良好的文件中

标签 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 替换“空格” 例如 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/

相关文章:

linux - 使用 sched_setaffinity 固定到核心后如何取消固定线程?

python - 无法让安装了ubuntu的电脑充当简单的fie共享程序中的服务器

regex - 美国电话号码验证

c# - 允许以逗号分隔的数字列表的正则表达式模式是什么?

JavaScript 从字符串中删除句号、逗号和空格

html - 正则表达式 - 在 Dreamweaver 中查找和替换

linux - 如何编写命令来搜索和删除文件,即使在找不到文件的情况下也是如此?

Bash - Curl (6) 无法解决主机问题

linux - 颠覆预提交 Hook 错误代码 255

bash - 当您执行 Ctrl-C 时 BASH 中会发生什么(提示,它不仅仅是发送 SIGINT)