如何获取代码以打印出5到10个字符长的用户名?

时间:2018-12-09 21:41:08

标签: bash shell unix

我有此代码来打印/ 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 :(得分:0)

您可以使用$ {#var}确定bash字符串的长度。

例如

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

答案 1 :(得分:0)

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

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