我有一个文件,下面的例子中有很多日志行,我想要做的是基本上在每个过程信息之后添加一个CR。我想我会用SED使用下面的
来做这件事sed -rn 's/([0-9]+) \(([a-z._0-9]+)\) ([0-9]+) ([0-9]+)/ \2,\1,\3,\4 \n/gp' < file
这部分有效,但我仍然从日志中获取Total: 3266 #015
,该日志显示在每行的末尾。我没想到这一点,因为它在正则表达式中没有匹配。
我已经在可用的网站上测试了正则表达式,它们总是看起来很好,并且找到了我期望的东西,就在我与SED结合时,我还没有得到我期待的结果。
非常感谢任何帮助或建议,
由于
安迪
这是统计数据的单行
1 (init) 3686400 123 148 (klogd) 3690496 116 16364 (memlogger.sh) 3686400 144 17 0 225 (dropbear) 1847296 113 242 (mini_httpd) 2686976 167 281 (snmpd) 4812800 231 283 (logmuxd) 2514944 262 284 (watchdog) 3551232 82 285 (controld) 5259264 610 287 (setupd) 5120000 436 289 (checkpoold) 3424256 129 296 (trap_sender_d) 3457024 165 298 (watch) 3686400 114 299 (processwatchdog) 3420160 119 314 (timerd) 3637248 219 315 (init) 3686400 116 16365 (cat) 3694592 120 Total: 3266 #015
答案 0 :(得分:1)
只需删除“总计:”
sed -rn 's/ +Total:.*//;
s/([0-9]+) +\(([a-z._0-9]+)\) +([0-9]+) +([0-9]+)/ \2,\1,\3,\4\n/gp'
您也可以选择匹配“总计:”:
sed -rn 's/([0-9]+) +\(([a-z._0-9]+)\) +([0-9]+) +([0-9]+)( *Total:.*)?/ \2,\1,\3,\4\n/gp'
# ------------^