举个例子:
我们要输出系统中以使用默认shell为:“/bin/bash” 的用户,并使用 “,” 分割,以一行输出:
例如:user1,user2,user3
看一下源文件中的数据:
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin ntp:x:106:112::/nonexistent:/usr/sbin/nologin postgres:x:107:114:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash testuser:x:1200:1200:test create user . :/home/testuser:/bin/bash
了解到该文件的组成,很容易达到目的,该文件的是 : 冒号分割的。第一列是用户名,最后一列是默认shell
直接上代码:
awk 'BEGIN{FS=":"}/\/bin\/bash/ {str=str","$1} END{gsub("^,", "", str); print str}' /etc/passwd
输出:
root,postgres,testuser
逐个解释:
FS=":"
表示指定分割符
/\/bin\/bash/
是过滤 /bin/bash
str=str","$1
把每一列拼接到最后
gsub("^,", "", str)
删除字符串第一的逗号