string - 使用 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”
我该怎么做?
解决方案
测试文件:
$ 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
推荐阅读
- amazon-web-services - 检索 IAM 角色临时凭证的最佳实践
- kubernetes - CephFS:挂载失败:挂载失败:退出状态 1
- r - “sna”或“igraph”:为什么我会为无向图获得不同的度数?
- node.js - 调度 API 调用以将结果保存到数据库
- c++ - 折叠、累加、for循环
- javascript - 为什么没有虚假更新就不会绘制 SVG?
- python - openpyxl 工作表的第一个空行是 [] 而不是 [None]
- mysql - 使用引用表和提交表创建视图表
- css - 防止一个
从包裹在桌子里面
- angular - 如何在 Typescript 附加的 html 按钮中调用点击事件?