显示/etc/passwd中所有UID大于9小于1000的用户名及其登录shell
时间: 2024-01-16 21:04:58 浏览: 29
您好,根据您的要求,可以使用以下命令来显示/etc/passwd中所有UID大于9小于1000的用户名及其登录shell:
```
awk -F: '{if ($3>=10 && $3<=999) print $1, $NF}' /etc/passwd
```
该命令使用awk来处理/etc/passwd文件,其中-F指定分隔符为冒号,$3表示第三个字段即UID,$1表示第一个字段即用户名,$NF表示最后一个字段即登录shell。该命令会筛选UID大于9小于1000的用户,并输出其用户名和登录shell。
相关问题
请写出一段命令,在文件/etc/passwd中找出所有普通用户账号的用户名以及其登录所使用的shell的信息。
可以使用以下命令来实现:
```
grep -vE "^(root|\+|halt|sync|shutdown)" /etc/passwd | awk -F: '$3>=1000 && $3!=65534{print $1"\t"$7}'
```
这个命令先使用grep命令过滤掉系统账号,然后使用awk命令输出UID在1000以上的用户账号的用户名以及登录所使用的shell信息。
2.1用:分隔/etc/passwd文件,取出第1,6列保存到a01.txt; 2.2用:分隔/etc/passwd文件,显示UID最大的用户名及其Shell; 用vi编辑一个文本文件,里面包括合格邮箱和不合格邮箱的行,用正则表达式显示正确格式的行。
我可以回答您的问题。
2.1的问题,可以通过以下命令实现:
```
cut -d : -f 1,6 /etc/passwd > a01.txt
```
2.2的问题,可以通过以下命令实现:
```
awk -F: '{if (max < $3) {max=$3;name=$1}} END {print name, $NF}' /etc/passwd
```
关于正则表达式显示合格邮箱的问题,您可以使用以下正则表达式:
```
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
```
对于不合格的邮箱行,则没有通用的正则表达式,需要具体情况具体分析。