首页 文章

如何让代码打印出长度在5到10个字符之间的用户名?

提问于
浏览
-2

我有这个代码打印/ 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 回答

  • 0
    awk -F : '/^[^:]{5,10}:/ { print $1 }' /etc/passwd
    

    正则表达式查找5-10个字符,这些字符不是行开头的字段分隔符,后跟字段分隔符 . (否则,无需以字段分隔符结束,我们还会在字段分隔符之前捕获超过10个字符的字符串 . )

  • 0

    您可以使用$ 确定bash字符串的长度 .

    例如,

    VARIABLE=hello
    echo "$VARIABLE has ${#VARIABLE} characters."
    

相关问题