linux - 提取两个单词之间的数据 Linux 脚本
问题描述
我在文件中有数据,如下所示,需要提取和之间的PER*IC
字符串~
PER*IC*FBI DEPT*EM*~
我试过这个:
grep -P -o '(?<=PER*IC).*?(?=~)' inputfile
但收到一条错误消息:
grep:后向断言不是固定长度
当我尝试
grep -P -o '(?<=PER).*?(?=~)' inputfile
它产生输出:
*IC*FBI DEPT*EM*
我想PER*IC
在代码中包含作为字符串的开头,预期结果是
*FBI DEPT*EM*
解决方案
其中'(?<=PER*IC).*?(?=~)'
是'*'
一个重复字符,它将匹配零个或多个 'R'
字符。您需要一个'*'
可以通过将其包含在字符类中来完成的文字,例如[*]
制作您的表达式:
grep -P -o '(?<=PER[*]IC).*?(?=~)'
哪个会返回:
*FBI DEPT*EM*
推荐阅读
- tensorflow - 无法将 pandas numpy 列转换为张量
- c# - 无法将对象转换为自己的类型
- python - python 字符串列表,替换所有不属于特定子列表的出现
- c - 乘法显式转换不起作用C
- python - 为什么我不能导入任何库?
- google-sheets - 如何设计一个公式(例如 COUNTIF),在多个工作表中搜索参考单元格中文本的部分匹配?
- azure - 如何从 Azure 安排部署在 Azure App Service Web App 上的 Http Post 服务
- active-directory - 添加了新的域控制器,但更改不会复制到现有服务器
- javascript - JavaScript小行星游戏的矢量文本?
- sql-server - 为什么在代码中使用 EF6 connectionString 时出现“System.Data.MetadataException:'无法加载指定的元数据资源。'”错误?