如何使用bash脚本提取连续模式
我尝试了 awk、grep 和 sed 根据下面的输出解析连续模式,但结果为空。只有其中一种模式有效。
在awk '/^[0-9]/ && /OAA-/' file.txt 与 grep -E '^[0-9].*ORA-' file.txt
下面的输入
2021-04-27T05:30:13.292507-04:00
OCC(3):
OCC(3):DB initialized.
OAA-06512: at "PATCH", line 001
2021-05-27T05:30:13.292507-04:00
OAA-06513: at "PATCH", line 002
OAA-06514: at "PATCH", line 003
2021-06-27T05:30:13.292507-04:00
This is the empty string.
预期输出
2021-04-27T05:30:13.292507-04:00
OAA-06512: at "PATCH", line 001
2021-05-27T05:30:13.292507-04:00
OAA-06513: at "PATCH", line 002
OAA-06514: at "PATCH", line 003
可以提供语法来解析像 Date 这样的连续模式,后跟 OAA 注释,按照预期的输出。
回答
使用您发布的示例,您无需 grep 即可执行任何操作:
$ awk -v RS= -F'n' '{print $1 ORS $NF}' file
2021-04-27T05:30:13.292507-04:00
OAA-06512: at "PATCH", line 001
2021-05-27T05:30:13.292507-04:00
OAA-06513: at "PATCH", line 002
如果这不是您所需要的全部,那么编辑您的问题以提供更好的示例,包括不起作用的情况。