You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep仅提取分号与双引号之间的目标内容?

解决grep提取分号与双引号间内容时去除边界符号的问题

嘿,我刚好能帮你搞定这个小问题!你之前用grep -oP ';.*?"' file提取的内容带了开头的;和结尾的",是因为你的正则把这两个边界字符也包含在匹配范围里了。咱们调整一下正则,就能只拿到中间的目标内容啦。

方法一:用grep的正向预查/后查(推荐)

直接修改正则,使用正向零宽断言来排除边界符号:

grep -oP '(?<=;).*?(?=")' file

正则解释:

  • (?<=;):正向后查,确保当前位置前面是分号;,但不会把分号包含在匹配结果里
  • .*?:非贪婪匹配任意字符(直到遇到第一个双引号为止,避免匹配过多内容)
  • (?="):正向预查,确保当前位置后面是双引号",同样不会把引号包含在结果里

执行这个命令后,你就能得到完全符合期望的输出:

8pctgRB Mwdf fgEio
8pctgRBwsaNezxio
8pctgsvMALNejkio
8pctgxdfALNebfio
8pwerRBMALNetior

方法二:用sed做替换提取

如果你更习惯sed,也可以用替换的方式提取目标内容:

sed -E 's/.*;(.*?)".*/\1/g' file

命令解释:

  • .*;:匹配到行内第一个分号之前的所有内容
  • (.*?):捕获分号到第一个双引号之间的内容(非贪婪匹配)
  • ".*:匹配双引号之后的所有内容
  • \1:把整行替换成刚才捕获的分组内容,只保留我们需要的部分

两种方法都能达到你想要的效果,选你顺手的就行~

内容的提问来源于stack exchange,提问作者Le Thuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:27:47