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