我有一些来自pdsh的输出,我想格式化它以加载到DB中。我需要它在3列,实质上想要模块ID和消息在一行。贝娄是我的输出:
10.125.45.58,scope, Module ID = server-1
10.125.45.58,scope, Message = Correctable memory error
10.125.45.58,scope, Module ID = server-2
10.125.45.58,scope, Message = Correctable memory error 这是我需要的输出:
10.125.45.58,scope,server-1 Correctable memory error
10.125.45.58,scope,server-2 Correctable memory error我一直醒着.我想不出什么主意?
以下是我迄今所做的工作
cat myfile.txt | sed -e "s/:/\,scope\,/g" | grep -E '(Module ID|Message)'谢谢。
发布于 2016-11-03 15:28:13
$ cat ip.txt
10.125.45.58,scope, Module ID = server-1
10.125.45.58,scope, Message = Correctable memory error
10.125.45.58,scope, Module ID = server-2
10.125.45.58,scope, Message = Correctable memory error
$ sed 'N; s/\n.*=//; s/ *Module ID.*= *//' ip.txt
10.125.45.58,scope,server-1 Correctable memory error
10.125.45.58,scope,server-2 Correctable memory error N获得下一行,因此替换可以适用于每两行一起考虑的s/\n.*=//;从换行符删除到最后一个=s/ *Module ID.*= *//删除从Module ID到=的所有内容,其中包含可选的空格。发布于 2016-11-03 18:32:10
sed是用于单行上的简单替换,仅此而已。对于任何其他方面,您都应该使用awk来实现可移植性、效率、简单性、清晰性、可维护性和软件的大多数其他理想属性:
$ awk 'NR%2{srvr=$NF;next} {ip=$1; sub(/.*=/,""); print ip srvr $0}' file
10.125.45.58,scope,server-1 Correctable memory error
10.125.45.58,scope,server-2 Correctable memory errorhttps://stackoverflow.com/questions/40405255
复制相似问题