提取文本的Linux命令

标签 linux sed

文本:

All rights reserved. ERROR: ORA-00257: archiver error. Connect internal only, error. SP2-0751: Unable to connect to oracle. Exiting SQL*Plus

我的预期输出:

ERROR: ORA-00257: archiver error.

我的命令:

sed 's/.*\(ERROR:.*\.\).*/\1/'

实际输出:

ERROR: ORA-00257: archiver error. Connect internal only, error. SP2-0751: Unable to connect to oracle.

我怎样才能调整我的 sed 命令来只显示这个:

ERROR: ORA-00257: archiver error.

最佳答案

与其使用所有字符 (.*) 后跟一个点,不如使用“除点之外的所有字符”([^\.]*)后跟一个点:

sed 's/.*\(ERROR:[^\.]*\.\).*/\1/'

关于提取文本的Linux命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293398/

相关文章:

linux - 运行create_data.sh时出现权限问题

regex - 如何习惯匿名化文件中的所有电子邮件地址

linux - Unix:使用 sed 删除每行的一部分

bash - 如何在搜索模式中使用带有 sed 的 xargs

linux - 如果需要,在文本文件 linux 的每一行中添加特定模式

c - Exec(cd 和 ls)和 Fork 调用 C

linux - 根据大小比较两个文件

c++ - posix_fadvise 不工作

linux - pthread_wrlock_xxlock 不是自旋锁吗?

linux - 用 SED 模式替换文件中的 SMTP 变量