linux - 从源文件中提取字符串的最简单方法是什么?

标签 linux bash grep extract

我今天被要求列出我们项目中的所有图像文件引用,以帮助删除/修复无效引用。

我们在源文件中的所有图像名称都用单引号或双引号括起来('image.png'"image.png")。

要提取那些我想使用 grepsed 和其他类似的工具,但很公平,我没能想出有效的方法。

我目前可以通过搜索图像文件扩展名(.png.gif 等)列出所有包含图像名称的行,但这也会完全显示行与我的搜索无关。如果每行有多个字符串,我对 sed 的尝试不起作用。

我可能可以自己过滤掉列表,但是嘿:这是 linux!所以必须有一个工具来完成这项工作。

你会怎么做?

最佳答案

你应该能够用这样的东西提取文件名:

grep -Eo "['\"][^'\"]*\.(gif|png)['\"]"

选项 -o 使 grep 只列出匹配项而不是整行。使用 tr 删除引号:

grep -Eo "['\"][^'\"]*\.(gif|png)['\"]" | tr -d "\"'"

关于linux - 从源文件中提取字符串的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854667/

相关文章:

linux - 在 shell 脚本中使用 sed 命令

java - 我如何更改 Ant grep 使其正则表达式中具有 unix 样式 "or"?

linux - 查找包含非打印字符(空字节)的文件

c - Linux 中的结构分配在 ARM 中失败但在 x86 中成功

c - gcc 用 .s 文件编译 .c - .bss 混淆(错误?)

linux - 无法安装 mojolicious

linux - 如何强制 bash 向另一个进程传递信号?

mysql - All or nothing/事务语句与 mysql

javascript - NodeJS - 如何将所有 console.log 写入文件?

linux - perl grep 和 cli grep 之间的不一致