首页 > 解决方案 > 提取两个单词之间的数据 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*

标签: linux

解决方案


其中'(?<=PER*IC).*?(?=~)''*'一个重复字符,它将匹配零个或多个 'R'字符。您需要一个'*'可以通过将其包含在字符类中来完成的文字,例如[*]制作您的表达式:

grep -P -o '(?<=PER[*]IC).*?(?=~)'

哪个会返回:

*FBI DEPT*EM*

推荐阅读