我有一个包含如下内容的文件,但我只对某些信息感兴趣
[2018-01-06 18:52:00,376] INFO [workflow@xxx] - [com.app.gateway] size of [1] message
[2018-01-06 18:54:00,188] INFO [workflow@xxx] - [com.app.gateway] size of [3] message
[2018-01-06 18:55:00,140] INFO [workflow@xxx] - [com.app.gateway] size of [5] message
我想清理它并输出以下内容:
[2018-01-06 18:52:00] [1]
[2018-01-06 18:54:00] [3]
[2018-01-06 18:55:00] [5]
我正在考虑使用拆分但是如何在括号之间拆分?
谢谢!
答案 0 :(得分:0)
查看您提供的示例输入,似乎您希望方括号中的数据仅包含数字/时间戳。 此解决方案仅在整个文件中存在此假设时才有效。
这是一个你可以尝试的正则表达式:
^(\[[0-9 :,-]+]).*(\[[0-9 :,-]+]).*$
将每个匹配项替换为$1 $2
<强>解释强>
^
- 断言字符串的开头(\[[0-9 :,-]+])
- 匹配[
后跟1次出现(数字或:
或,
或-
或空格然后是]
并将其捕获为第1组.*
- 贪婪地匹配任何字符的出现次数(\[[0-9 :,-]+])
- 匹配[
后跟1次出现(数字或:
或,
或-
或空格然后是]
并将其捕获为第2组.*
- 贪婪地匹配任何字符的出现次数$
- 断言字符串的结尾<强>代码:强>
$var= "[2018-01-06 18:52:00,376] INFO [workflow@xxx] - [com.app.gateway] size of [1] message"
$var = $var-replace "^(\[[0-9 :,-]+]).*(\[[0-9 :,-]+]).*$",'$1 $2'
$var