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

1

それがあなたが望むものです:

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また、少なくとも 1 つの一致が見つかった場合は、ファイルの読み取りを停止するために使用することを忘れないでください。

于 2013-09-06T19:21:59.733 に答える
1
awk '$1=="dir" && $2!="/usr/folder2" {print}' filename.txt

また

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