我有这个代码打印/ etc / passwd文件中的所有用户名但是我试图让代码只打印出5到10个字符之间的用户名,有人知道我会怎么做吗?
#!/bin/bash
MAXLENGTH=$(cut -d: -f1 < /etc/passwd | wc -L)
MINLENGTH=$MAXLENGTH
SMALLESTNAME=""
for NAME in $(cut -d: -f1 < /etc/passwd)
do
if [ ${#NAME} -eq $MAXLENGTH ]
then
echo "The Longest UserName In The System
Is:" $NAME
echo " Its Length Is" $MAXLENGTH
elif [ ${#NAME} -lt $MINLENGTH ]
then
MINLENGTH=${#NAME}
SMALLESTNAME=$NAME
fi
done
echo
echo "The Smallest UserName In The System Is:"
$SMALLESTNAME
echo "Its Length is:" $MINLENGTH
2 回答
正则表达式查找5-10个字符,这些字符不是行开头的字段分隔符,后跟字段分隔符 . (否则,无需以字段分隔符结束,我们还会在字段分隔符之前捕获超过10个字符的字符串 . )
您可以使用$ 确定bash字符串的长度 .
例如,