【发布时间】:2015-06-09 15:48:13
【问题描述】:
我在其中获取信息的文件示例:
name : server1
description : webserver
memory : 32gb
name : server2
memory : 128gb
name : server3
description : appserver
我正在做这样的事情:
cat myfile | egrep -w "name|description|memory" | awk -F" " '{print $3}' >> myfile2
为了从 myfile 的第二列取回信息。
然后,我将 myfile2 格式化为在一行中包含来自每个服务器的信息(使用 tr 替换 CRLF),用分号分隔以将它们导入 Excel。
myfile2:
server1;webserver;32gb
server2;128gb
server3;appserver
问题是:当 egrep 不匹配任何内容时(如 server2 的描述或 server3 的内存),myfile2 中有一行空白...如何将其替换为空格?
需要我的文件 2 的输出:
server1;网络服务器;32gb
服务器2;;128GB
server3;appserver;;
【问题讨论】:
-
您能否edit 向我们展示您所显示的输入所需的输出究竟是什么?
-
这听起来有点像XY Problem。您在此处真正想做什么,以及将如何使用这些数据?正如 Tom 建议的那样,请提供您正在寻找的输出变化的示例。
-
grep -v "^$"将排除空行。 -
帖子已编辑。当没有什么要 grep 时(例如 server2 的描述或 server3 的内存),我现在只想放一个分号以便创建一行,即使其中没有信息。
-
您的预期输出中的“server3”来自哪里?确保预期输出与示例输入匹配。