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一致が互いに近いため、含まれる行が長くなります。

おすすめ記事