首页 > 解决方案 > 使用 shell 脚本捕获 2 个特定字母/单词之间的字符串

问题描述

我正在尝试使用 sed/awk 捕获 2 个特定字母/单词之间的字符串。这就是我想要做的:

输入是一个文件test.log,包含

Owner: CN=abc.samplecerrt.com,o=IN,DC=com
Owner: CN=abc1.samplecerrt.com,o=IN,DC=com

我只想提取“CN=abc.samplecerrt.com”

我试过了

sed 's/.*CN=\(.*\),.*/\1/p' test.log >> result.log

但这会返回“abc.samplecerrt.com,o=IN,DC=com”

我该怎么做?

标签: stringshellawksed

解决方案


测试文件:

$ cat logs.txt
CN=abc.samplecerrt.com,o=IN,DC=com Owner: CN=abc1.samplecerrt.com,o=IN,DC=com

命令和输出:

$ grep -oP 'CN=(?:(?!CN=).)*?.com' logs.txt
CN=abc.samplecerrt.com
CN=abc1.samplecerrt.com

推荐阅读