提取包含“FAILED”且后面不带括号的短语

问题描述 投票:0回答:1

如何提取包含“FAILED”且后面没有括号“)”的短语,并删除其前面有“Linux x86_64)”的任何内容? 例如 在:

Chrome Headless 117.0.5938.132 (Linux x86_64): Executed 5 of 270[32m SUCCESS[39m (0 secs / 0.018 secs)
WARN: 'Spec 'zip combines one value of each' has no expectations.'
[1A[2KChrome Headless 117.0.5938.132 (Linux x86_64): Executed 6 of 270[32m SUCCESS[39m (0 secs / 0.021 secs)
[1A[2K[31mChrome Headless 117.0.5938.132 (Linux x86_64) interval should emit every second FAILED[39m
    Expected $[0].frame = 1007 to equal 1000.
    Expected $[1].frame = 2007 to equal 2000.
    Expected $[2].frame = 3007 to equal 3000.
    Expected $[3].frame = 4007 to equal 4000.
    Expected $[4].frame = 5007 to equal 5000.
    Expected $[5].frame = 5007 to equal 5000.
        at <Jasmine>
        at TestScheduler.assertDeepEqual (src/misc/test_scheduler.ts:4:20)
        at filter (node_modules/rxjs/dist/esm/internal/testing/TestScheduler.js:139:22)
        at Array.filter (<anonymous>)
        at TestScheduler.flush (node_modules/rxjs/dist/esm/internal/testing/TestScheduler.js:137:43)
Chrome Headless 117.0.5938.132 (Linux x86_64): Executed 7 of 270[31m (1 FAILED)[39m (0 secs / 0.027 secs)

预期结果:

interval should emit every second FAILED

我尝试过这个,有效。然而,如何改进呢?即无需将输出通过管道传输到 grep 和 sed。

grep FAILED in | grep ' FAILED[^)]' | sed -e 's#.*Linux x86_64)##' -e 's# ##'
sed grep
1个回答
0
投票

您可以使用

awk
来执行匹配和过滤

awk '/FAILED/ && !/\(Linux x86_64\)/ { sub(/.*FAILED /, ""); print }'

© www.soinside.com 2019 - 2024. All rights reserved.