【发布时间】:2021-06-02 19:31:25
【问题描述】:
我正在使用 sed 仅捕获和打印 12 点之前的特定时间戳(即,第一个数字为 0,例如小时为 09)
sed -E 's/^.*\[(.* 0.*)\].*/\1/g'
但是,它也会打印未捕获任何组的行。如何避免打印那些?
以下是上述命令的输出。在正则表达式匹配的地方,只打印捕获的组,在不匹配的地方,打印原始字符串。如果正则表达式不匹配,我想避免打印字符串。
2021/03/01 09:11:14
Accessed ([2021/03/01 12:32:36])
Accessed ([2021/03/01 16:48:29])
Accessed ([2021/03/01 19:40:03])
2021/03/02 08:53:27
Accessed ([2021/03/02 11:03:23])
Accessed ([2021/03/02 11:04:08])
Accessed ([2021/03/02 16:36:48])
Accessed ([2021/03/02 19:35:31])
2021/03/03 08:38:10
【问题讨论】:
-
@VishalSingh 但它的 0 跟在空格后面。
-
上述测试的预期输出是什么?
-
试试:
sed -nE 's/^.*\[(.* 0.*)\].*/\1/p' file -
@anubhava 如果您可以发布您的解决方案作为答案,那么我可以接受。
-
我不同意这个欺骗帖子。可能还有其他更合适的骗子我找不到,但这个看起来不像是正确的骗子。