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

如何用grep从文件中提取'-'分隔符前的可变长度字符串?

用grep提取目标字符串的解决方案

你的需求是从test.txt中提取每个引号内-之前的内容(比如apples1、testme2这类),原命令失效的原因是:只取了行内第三个字段,还硬截前7个字符,既没法覆盖所有目标内容,逻辑也不通用。

直接用grep可以搞定,推荐用Perl兼容正则的写法(大部分现代系统的grep都支持):

grep -oP '(?<=")[^"-]+' test.txt

命令解释:

  • -o:只输出匹配到的内容,而非整行
  • -P:启用Perl风格正则,支持更灵活的匹配规则
  • (?<="):匹配紧跟在双引号之后的位置(不会把引号包含进结果)
  • [^"-]+:匹配任意数量的、既不是双引号也不是-的字符,正好对应-之前的目标内容

运行这个命令后,会输出:

apples1
testme2

如果你的系统grep不支持-P选项,可以用基础正则的替代写法:

grep -o '"[^"-]*' test.txt | tr -d '"'

先匹配带引号的前缀内容,再用tr去掉开头的双引号,同样能得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:00