Observe qualquer padrão consistente com grupos e seus números de grupos correspondentes que começam com 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:
Um padrão que imediatamente aparece para mim é que todos os números de grupo são prefixados por dois pontos, :
. Então você pode procurar linhas que contenham :1
, por exemplo.
Como estamos falando sobre a procura de padrões em um arquivo, você deve pensar imediatamente na ferramenta grep
. Essa ferramenta pode procurar padrões e, em seguida, imprimir as linhas correspondentes que contêm o padrão.
Então, se fizermos uma pequena montagem dos bits que conhecemos:
$ 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:
Formatando a saída
Se você deve formatar a saída acima para que esteja de acordo com isto:
user 123
Então você pode usar sed
para limpá-lo:
$ grep ":1" /etc/group | sed 's/:\(x:\)*/ /g' | head -5
bin 1
wheel 10 saml
cdrom 11
mail 12
man 15
O comando head
é apenas para limitar a saída aqui para 5 linhas.