如何提取包含“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# ##'
您可以使用
awk
来执行匹配和过滤
awk '/FAILED/ && !/\(Linux x86_64\)/ { sub(/.*FAILED /, ""); print }'