我的硬盘中有一堆 ISO 图像,我将它们的全部内容列在一个文本文件中,格式如下:
<immage>.iso, <dir structure>/<filename>.<extension>
Run Code Online (Sandbox Code Playgroud)
例子:
OS Backups.iso, ubuntu-12.04-desktop-i386.iso
OS Backups.iso, xubuntu-12.04-desktop-i386.iso
OS Backups.iso, background/pictures.jpg
Pictures vacation 2011.iso, documents/cost_estimates.xls
Pictures vacation 2011.iso, italy/img1.jpg
Pictures vacation 2011.iso, italy/img2.jpg
Run Code Online (Sandbox Code Playgroud)
现在我想对该文本文件发出一个 grep 命令来查找名称中包含“图片”的文件。预期结果将是(对于上一个示例):
Pictures vacation 2011.iso
OS Backups.iso, background/pictures.jpg
Run Code Online (Sandbox Code Playgroud)
关于如何使用 grep 完成这样的事情的任何想法?备择方案?谢谢!
以下是如何使用grep、使用 Perl 正则表达式语法-P和return-only-matching-part开关来做到这一点-o:
grep -Poi "(.*pictures.*\.iso.*pictures.*|.*pictures.*\.iso|.*pictures.*)" | sort | uniq
Run Code Online (Sandbox Code Playgroud)
返回:
操作系统备份.iso, background/pictures.jpg 图片假期 2011.iso
grep首先检查它是否是.iso名称中带有“pictures”的文件,该文件还包含名称中带有“pictures”的文件,例如:
图片度假2011.iso,意大利/ pictures5.jpg
.iso名称中带有“图片”的文件;