一部のユーザーの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番目のインスタンスの後のすべての行に展開されます。