gpt4 book ai didi

regex - grep - 显示匹配行的两部分

转载 作者:行者123 更新时间:2023-12-01 11:17:45 24 4
gpt4 key购买 nike

我通读了 grep 的手册页并尝试了一些方法,但都没有用,至少对我来说是这样。

我想在拖尾日志时提取可读性好的行。这是我要美化的日志文件中的通用行:

26 Jan 2018 08:32:29,309 [TEXT] (myService-0) long.text.I.dont.care.about.but.is.different.in.every.line: [OTHERTEXT] Text im actually interested in

我想要的是:

26 Jan 2018 08:32:29,309 [TEXT] [OTHERTEXT] Text im actually interested in

我知道使用 grep -o -e ".*\[TEXT\]" 我得到了第一部分,使用 grep -o -e "\[OTHERTEXT\] .*",我得到了第二部分。

但这不会显示在一行中,如果我将它组合成 grep -o -e ".*\[TEXT\]"-e "\[OTHERTEXT\].*"

[TEXT][OTHERTEXT] 始终存在并且是我的“分隔符”,因此可用于支持提取我需要的部分。

我最初认为我可以使用 grep -o -e "(.*\[TEXT\]).*(\[OTHERTEXT\].*)" 然后以某种方式使用匹配组$1$2,但要么我没有看到它,要么没有办法看到它。

有没有办法实现我想要的?

首选是使用 grep(只是因为我想了解更多相关信息),但如果不可能,则使用 awksed也很好,它只需要与 tail -f 一起使用即可。

而且我也愿意接受其他方法来达到这一点,所以让我知道有哪些方法可以达到这一点。

谢谢,托比亚斯

最佳答案

你可以使用sed:

sed -E 's/(\[TEXT]).*(\[OTHERTEXT])/\1 \2/' file.log

26 Jan 2018 08:32:29,309 [TEXT] [OTHERTEXT] Text im actually interested in

sed 匹配 [TEXT][OTHERTEXT] 之间的模式,并将它们分成两组。在替换中,它使用反向引用将这些标记放回 \1\2

关于regex - grep - 显示匹配行的两部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com