Что-то вроде
grep -o '^[^:]*[^astrmz:]:' /etc/passwd | tr -d :
или
cut -d: -f1 /etc/passwd | grep '[^astrmz]$'
[^blah]
соответствует любому символу , но перечисленным, противоположным [blah]
.
GNU grep
с использованием lookahead :
grep -Po '^[^:]*[^astrmz:](?=:)' /etc/passwd
Или с использованием 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
Как видите, существует множество потенциальных подходов.