例如在/ etc / passwd第5行($ 5)我的名字是" Smith Simon"。我怎样才能提取字符串" Simon"并使用awk存储它?提前谢谢。
答案 0 :(得分:0)
提取字符串“Simon”并存储它
gawk 方法:
firstname=$(awk -F':' '{split($5, s, " "); print s[2]}' /etc/passwd)
echo $firstname
Simon
split($5, s, " ")
- 将第5列拆分为以空格分隔的部分
答案 1 :(得分:0)
打印/ etc / passwd中的所有姓氏:
awk -F':' '{sub(/.* /,"",$5);$0=$5}7' /etc/passwd
在输出中:
(empty) -> ''(empty)
first middle last -> last
nickname -> nickname
更多信息可能与此问题有关(或不相关):
我不认为你想从系统保留用户那里得到姓氏。像root或守护进程......
Linux(我看过标签)通常用户ID> 1000,如果您通过useradd创建用户。因此,您只需添加awk -F':' '$2>=1000{sub(.....'
即可打印出那些系统用户。
我上面说通常,因为有些POSIX系统定义了500。您可以从/etc/login.defs
让awk读取此文件并查找最小用户ID也很容易,然后在/etc/passwd
中检查它是否真的需要。
答案 2 :(得分:0)
awk F: '/smith/{print substr($5,7,5)}' /etc/passwd
Simon