我有这个日志 -
MySite Access reject(60) - Redirect to user page
我希望能够解析它,以便(60)
在一个组中,其余组在另一个组中。
我目前使用的是
([A-Za-z \-\(\)\d]+)
接受所有这些。问题在于,当尝试对 MySite Access reject
的第一部分进行分组时,它将单词reject与(60)识别为一个单词。我不知道如何将它们分开。
任何建议都将受到赞赏。
答案 0 :(得分:0)
只需使用三个捕获组即可隔离括号中的两个文本组件和数字。
<强>查找强>
^[^(]+\((\d+)\)(.*)$
<强>替换强>
$1 $3 $2
请注意,为了便于阅读,您可能希望在日志文本和数字之间添加某种分隔符。
答案 1 :(得分:0)
假设您只使用bash并且在名为log.log
的文件中有上面的行,我将使用以下内容仅分别选择文本和数字(带括号)。
cat log.log | sed 's/([0-9].)//g'
cat log.log | grep -o '([0-9]\+)'
答案 2 :(得分:0)
你介意两次处理一行吗?我的意思是,
你可以先做一个匹配来得到这个号码。在这里,60。
即\(([\d]+)\)
您可以再次进行匹配以获取文本。
即[^\(\d\)]