我有filename.txt
中的文件列表dir /etc/folder1
dir /usr/folder2
除了dir / usr / folder2之外,我需要检查文件中是否还有其他目录条目? 基本上,确保除了dir / usr / folder2之外没有其他条目,我尝试使用 但这甚至匹配dir / usr / folder2
grep -E 'dir /[:alpha]*/*' /etc/filename.txt
有更好的方法吗?
答案 0 :(得分:2)
您无需提供正则表达式,只需传递-v
(反向)标记
grep -v 'dir /usr/folder2' filename.txt
答案 1 :(得分:1)
这就是你想要的:
grep -P '^dir (?!/usr/folder2$)' filename.txt
这将打印以dir
开头的所有行,其中包含指定文件夹以外的任何内容。
如果您只想查看是否有其他dir
(不打印),请使用以下命令:
grep -qP -m 1 '^dir (?!/usr/folder2$)' filename.txt && echo 'There are other dirs' || echo 'There are no other dirs'
在这种情况下,您不需要输出,因此使用了-q
。另请记住,如果找到至少一个匹配项,请使用-m 1
停止阅读该文件。
答案 2 :(得分:1)
awk '$1=="dir" && $2!="/usr/folder2" {print}' filename.txt
或
grep ^dir filename.txt | grep -v /usr/folder2