Linux 如何在bash中显示所有用户,而不是以“结束”;特定字符“;s

Linux 如何在bash中显示所有用户,而不是以“结束”;特定字符“;s,linux,bash,Linux,Bash,系统中的所有用户,如果其姓名中没有结尾字符a、s、t、r、m、z,则必须在Bash中显示 可以从第一列的/etc/passwd文件中获取用户名。但我无法理解将这些角色排除在搜索之外的正确方法 我应该使用grep吗?还是只是割伤?类似的东西 grep -o '^[^:]*[^astrmz:]:' /etc/passwd | tr -d : 或 [^blah]匹配除所列字符以外的任何字符,与[blah]相反 GNUgrep使用前瞻: 或者改用awk: awk -F: '$1 ~ /[^astrmz

系统
中的所有用户,如果其姓名中没有结尾字符astrmz,则必须在Bash中显示

可以从第一列的
/etc/passwd
文件中获取用户名。但我无法理解将这些角色排除在搜索之外的正确方法

我应该使用grep吗?还是只是割伤?

类似的东西

grep -o '^[^:]*[^astrmz:]:' /etc/passwd | tr -d :

[^blah]
匹配除所列字符以外的任何字符,与
[blah]
相反

GNU
grep
使用前瞻:

或者改用
awk

awk -F: '$1 ~ /[^astrmz]$/ { print $1 }' /etc/passwd
或者在没有外部命令的纯bash中:

while IFS=: read -r name rest; do
  if [[ $name =~ [^astrmz]$ ]]; then
    echo "$name"
  fi
done < /etc/passwd
而IFS=:read-r name rest;做
如果[[$name=~[^astrmz]$];然后
回显“$name”
fi
完成
正如您所见,有很多潜在的方法。

类似

grep -o '^[^:]*[^astrmz:]:' /etc/passwd | tr -d :

[^blah]
匹配除所列字符以外的任何字符,与
[blah]
相反

GNU
grep
使用前瞻:

或者改用
awk

awk -F: '$1 ~ /[^astrmz]$/ { print $1 }' /etc/passwd
或者在没有外部命令的纯bash中:

while IFS=: read -r name rest; do
  if [[ $name =~ [^astrmz]$ ]]; then
    echo "$name"
  fi
done < /etc/passwd
而IFS=:read-r name rest;做
如果[[$name=~[^astrmz]$];然后
回显“$name”
fi
完成

正如您所见,有很多潜在的方法。

这应该可以做到:

cut -d: -f1 /etc/passwd | grep -vE 's$|t$|r$|m$|z$'
cut命令从密码文件中删除用户名。 然后grep-v(不匹配) grep-E进行多次匹配(或) $符号表示要匹配的最后一个字符

例如,在我的mac电脑上,我得到:

_gamecontrollerd
_ondemand
_wwwproxy
_findmydevice
_ctkd
_applepay
_hidd
_analyticsd
_fpsd
_timed
_reportmemoryexception
(你看不到任何名字以这5个字母结尾)


祝你好运。

这应该可以做到:

cut -d: -f1 /etc/passwd | grep -vE 's$|t$|r$|m$|z$'
cut命令从密码文件中删除用户名。 然后grep-v(不匹配) grep-E进行多次匹配(或) $符号表示要匹配的最后一个字符

例如,在我的mac电脑上,我得到:

_gamecontrollerd
_ondemand
_wwwproxy
_findmydevice
_ctkd
_applepay
_hidd
_analyticsd
_fpsd
_timed
_reportmemoryexception
(你看不到任何名字以这5个字母结尾)


祝你好运。

在使用
bash
时使用简单的一行程序:

compgen-u | grep-v'[astrmz]$'

compgen-u
命令将生成一个用户列表(在
/etc/passwd
中没有所有额外字段)
compgen
bash
中的内置代码,通常用于用户名补全。

使用
bash
时,只需一行代码即可:

compgen-u | grep-v'[astrmz]$'
compgen-u
命令将生成一个用户列表(在
/etc/passwd
中没有所有额外字段)
compgen
bash
中的一个内置项,通常用于完成用户名