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

如何使用grep提取双引号包裹的字符串 适配C文件批量提取场景

grep提取C文件双引号包裹字符串操作方法

可以通过grep工具实现需求,以下是不同场景的具体实现命令:

场景1:仅输出包含双引号字符串的完整行

如果只需要定位所有包含字符串常量的.c文件对应行,使用以下命令:

grep -r --include="*.c" '"[^"\\]*(?:\\.[^"\\]*)*"' ./

输出格式默认是「文件路径:匹配行内容」,添加-n参数可额外输出行号方便定位。

场景2:同时输出完整行和提取的字符串内容

如果需要同时拿到所在行信息和双引号包裹的字符串本身,使用以下命令:

grep -rnP --include="*.c" '"[^"\\]*(?:\\.[^"\\]*)*"' ./ | awk -F: '{
print "文件路径:"$1
print "行号:"$2
print "完整行内容:"$0
match($0, /"([^"\\]*(?:\\.[^"\\]*)*)"/, res)
print "提取到的字符串:"res[1]
print "-------------------------"
}'

常用参数说明

  • -r:递归搜索当前目录下的所有子目录文件,若仅需处理当前目录的.c文件可删除该参数,将命令末尾的./替换为*.c
  • --include="*.c":限定仅搜索后缀为.c的源文件,过滤其他类型文件提升搜索效率
  • -P:启用Perl兼容正则,支持处理转义双引号这类复杂匹配规则
  • -n:输出匹配内容的行号

注意事项

  • 上述命令的正则默认适配C语言转义规则,不会把字符串内部的\"转义字符误判为字符串结束标记
  • 如果你确认所有待处理文件没有转义双引号,可以将正则简化为"[^"]*",获得更高的搜索效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 01:15:06