我有此代码来打印/ 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
答案 0 :(得分:0)
您可以使用$ {#var}确定bash字符串的长度。
例如
VARIABLE=hello
echo "$VARIABLE has ${#VARIABLE} characters."
答案 1 :(得分:0)
awk -F : '/^[^:]{5,10}:/ { print $1 }' /etc/passwd
正则表达式查找5-10个字符,这些字符不是行开头的字段分隔符,其后是字段分隔符。 (否则,不需要以字段分隔符结尾,我们还将在字段分隔符之前捕获超过10个字符的字符串。)