grep -A nがnよりも多くの行を提供するのはなぜですか?

grep -A nがnよりも多くの行を提供するのはなぜですか?

一部のユーザーのUID / GIDを確認するためにdscacheutilコマンドを使用しています。 -Aフラグでgrepを使用すると、必要な操作が実行されますが、与えることは意味がありません。出力は次のとおりです。

Edit8:~ edit08$ dscacheutil -q user | grep -A 6 "userX"
name: userX
password: ********
uid: 2063
gid: 1021
dir: /Users/userX
shell: /bin/sh
gecos: User X

name: userA
password: ********
uid: 2013
Edit8:~ edit08$ dscacheutil -q user | grep -A 4 "userX"
name: userX
password: ********
uid: 2063
gid: 1021
dir: /Users/userX
shell: /bin/sh
gecos: User X

name: userA
Edit8:~ edit08$ dscacheutil -q user | grep -A 2 "userX"
name: userX
password: ********
uid: 2063
--
dir: /Users/userX
shell: /bin/sh
gecos: User X
Edit8:~ edit08$ dscacheutil -q user | grep -6 "userX"
uid: 2012
gid: 1010
dir: /Users/userB
shell: /bin/sh
gecos: User B

name: userX
password: ********
uid: 2063
gid: 1021
dir: /Users/userX
shell: /bin/sh
gecos: User X

name: userA
password: ********
uid: 2013
Edit8:~ edit08$ dscacheutil -q user | grep -A 2 "userX"
name: userX
password: ********
uid: 2063
--
dir: /Users/userX
shell: /bin/sh
gecos: User X
Edit8:~ edit08$ dscacheutil -q user | grep -A 3 "userX"
name: userX
password: ********
uid: 2063
gid: 1021
dir: /Users/userX
shell: /bin/sh
gecos: User X

Edit8:~ edit08$ 

私のロジックでは、行数は6でなければならないと指示していますが、実際には3です。

そこに誰がいませんか?

ありがとう

答え1

~~~パターンに一致する行を表示し、次の行に番号を付けました。

    Edit8:~ edit08$ dscacheutil -q user | grep -A 6 "userX"
~~~ name: userX
 1  password: ********
 2  uid: 2063
 3  gid: 1021
~~~ dir: /Users/userX
 1  shell: /bin/sh
 2  gecos: User X
 3  
 4  name: userA
 5  password: ********
 6  uid: 2013


    Edit8:~ edit08$ dscacheutil -q user | grep -A 3 "userX"
~~~ name: userX
 1  password: ********
 2  uid: 2063
 3  gid: 1021
~~~ dir: /Users/userX
 1  shell: /bin/sh
 2  gecos: User X
 3

ご覧のとおり、関連grep -A nする一致よりも多くの行は表示されません。n一致が互いに近いため、含まれる行が長くなります。

答え2

マニュアルページから:

-A NUM, --after-context=NUM
行を一致させた後、NUM行末尾のコンテキストを印刷します。連続して一致するグループ間にグループ区切り記号(--)を含む行を配置します。 -o または --only-matching オプションを使用すると効果がなく、警告が表示されます。

提供するすべての例では、各インスタンスuserXの後に正しい数のコンテキスト行が続きます。別のインスタンスがuserX別のインスタンスのコンテキストに表示される場合、コンテキストは2番目のインスタンスの後のすべての行に展開されます。

関連情報