식별자가 "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
예를 들어 다음을 포함하는 행을 찾을 수 있습니다.
파일에서 패턴을 찾는 것에 대해 이야기하고 있으므로 이 도구가 즉시 떠오를 것입니다 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줄로 제한합니다.