識別子が「1」で始まるすべてのグループに対して、システムグループとその識別子を印刷する1行プログラムを作成する必要があります。たとえば、cat
コマンドの結果/etc/group
は次のようになります。
印刷する必要があります:
users 100
libuuid 101
netdev 102
crontab 103
........
penny 1002
leonard 1003
sheldon 1004
答え1
AWK
これにより、これをより効率的に実行できます。
$ awk -F: '$3 ~ /^1/ {print $1, $3}' /etc/group
daemon 1
uucp 10
man 12
proxy 13
kmem 15
users 100
libuuid 101
crontab 102
fuse 103
avahi-autoipd 104
scanner 105
messagebus 106
colord 107
答え2
1で始まるグループの一貫したパターンとそのグループ番号が表示されますか?
$ head -20 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:logcheck
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:saml
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
すぐに浮かぶパターンの1つは、すべてのグループ番号の前にコロンが付いていることです:
。:1
たとえば、次を含む行を見つけることができます。
ファイル内のパターンを見つけることについて話しているので、このツールはすぐに思い浮かぶでしょうgrep
。このツールはパターンを見つけ、そのパターンを含む対応する行を印刷します。
したがって、私たちが知っているビットを組み立てると、次のようになります。
$ grep ":1" /etc/group
bin:x:1:
wheel:x:10:saml
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
users:x:100:
systemd-journal:x:190:
systemd-journal-gateway:x:191:
usbmuxd:x:113:
qemu:x:107:
rtkit:x:172:
abrt:x:173:
avahi-autoipd:x:170:
oprofile:x:16:
mock:x:135:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
フォーマットされた出力
次の要件を満たすために上記の出力をフォーマットする必要がある場合:
user 123
sed
その後、以下を使用して清掃できます。
$ grep ":1" /etc/group | sed 's/:\(x:\)*/ /g' | head -5
bin 1
wheel 10 saml
cdrom 11
mail 12
man 15
このhead
コマンドはここで出力を5行に制限します。