我有以下日志行:
2017-01-01客户:abc ID:144
我需要处理它并将其插入MySQL,但有时数据可能会出错:
2017-01-01客户:a,b .c ID:144
如何仅在"客户端内执行sed替换:xxx"组,所以我可以删除不需要的字符?
答案 0 :(得分:1)
使用反向引用和t
命令,仅在Client:
和ID
之间捕获和输出所需字符:
$ sed -r ':a;s/(Client:[^ ,.]*)[ ,.](.* ID)/\1\2/;ta;' <<< "2017-01-01 Client:a, b .c ID:144"
2017-01-01 Client:abc ID:144
捕获并输出所有截至下一个不需要的字符([ ,.]
)的字符。如果替换成功,t
(用于测试)命令将循环到脚本的开头(到:a
标签)。