使用 Grep 搜索文本文件(查找生成的文件),但忽略路径

使用 Grep 搜索文本文件(查找生成的文件),但忽略路径

我收到了一个用 find 生成的巨大文本文件。

生成的文本文件的内容是具有完整路径的文件引用,即:

//server/dir1/dir1foobar.ext
//server/dir1/dir2/dir1bar.ext
//server/dir1/dir2/dir1.ext
//server/dir3/dir4/dir4.ext
//server/dir5/dir6/dir7/dir1foo.ext
//server/dir1/dir2/dir3/dir2.ext
//server/dir3/dir4/dir5/dir6/dir3.ext

(文件名和路径有点随机,所以我不能总是从行首或行末的位置 n 开始)

我需要grep对此文本文件进行特定的模式处理,将结果(需要是匹配的完整行)写入新sort文件(按排序),但也需要忽略任何不是文件名的匹配。

因此,通过上面的示例行,我有一个搜索模式“dir1”,结果必须是一个包含以下行的新文件:

//server/dir1/dir1foobar.ext
//server/dir1/dir2/dir1bar.ext
//server/dir1/dir2/dir1.ext
//server/dir5/dir6/dir7/dir1foo.ext

我的尝试sort -f -u $textfile | grep -i $pattern > $newfile没有成功,因为当目录包含模式时,grep 也会匹配,这将导致 的“错误”匹配//server/dir1/dir2/dir3/dir2.ext

我在手册中看到grep,可以使用正则表达式选项-G,但无法想出任何仅在一行的文件名部分中进行 grep 的方法。

答案1

尝试像这样进行 grep:

grep -i 'dir1[^/]*$'

这意味着它仅当匹配时才会接受匹配,并且直到行尾之前dir1该匹配都不会跟有任何匹配。/

相关内容