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다른 인스턴스의 컨텍스트에 나타나는 경우 컨텍스트는 두 번째 인스턴스 뒤의 모든 줄로 확장됩니다.

관련 정보