0

我在 filename.txt 中有文件列表

dir /etc/folder1
dir /usr/folder2

我需要检查文件中除了 dir /usr/folder2 之外是否还有其他目录条目?基本上,确保除了 dir /usr/folder2 之外没有其他条目,我尝试使用,但这甚至匹配 dir /usr/folder2

 grep -E 'dir /[:alpha]*/*' /etc/filename.txt

有一个更好的方法吗 ?

4

3 回答 3

2

您不需要提供正则表达式,只需传递-v(inverse) 标志

grep -v 'dir /usr/folder2' filename.txt 
于 2013-09-06T19:19:20.963 回答
1
awk '$1=="dir" && $2!="/usr/folder2" {print}' filename.txt

或者

grep ^dir filename.txt | grep -v /usr/folder2
于 2013-09-06T20:43:47.153 回答
1

那正是你想要的:

grep -P '^dir (?!/usr/folder2$)' filename.txt

dir这将打印除您指定的文件夹以外的所有开头的行。

如果您只想查看是否还有其他dirs(不打印它们),请使用以下命令:

grep -qP -m 1 '^dir (?!/usr/folder2$)' filename.txt && echo 'There are other dirs' || echo 'There are no other dirs'

在这种情况下,您不需要输出,因此-q使用了。-m 1如果至少找到一个匹配项,请记住使用停止读取文件。

于 2013-09-06T19:21:59.733 回答