String 如何获得管柱长度?

String 如何获得管柱长度?,string,shell,pipe,String,Shell,Pipe,这是一个显示我所有用户名的代码 -q user | grep -A 0 -B 2 -e uid:\ 5'[0-9][0-9]' | grep ^name | cut -d " " -f2- 例如,输出类似于 usernameone hello whoami 然后,我希望检查所有用户名的长度。 像这样的输出 11 //usernameone 5 //hello 6 //whoami 如何获取管道代码的长度?获取管道命令可能是不可能的,因此这里有一个使用拆分和while循环来完成此任务的单行程

这是一个显示我所有用户名的代码

-q user | grep -A 0 -B 2 -e uid:\ 5'[0-9][0-9]' | grep ^name | cut -d " " -f2-
例如,输出类似于

usernameone
hello
whoami
然后,我希望检查所有用户名的长度。 像这样的输出

11 //usernameone
5 //hello
6 //whoami

如何获取管道代码的长度?

获取管道命令可能是不可能的,因此这里有一个使用拆分和while循环来完成此任务的单行程序:

-q user | grep -A 0 -B 2 -e uid:\ 5'[0-9][0-9]' | grep ^name | cut -d " " -f2-|tr " " "\n"|while read user; do echo $(echo $user|wc -c) '//'$user;done|tr "\n" " ";echo

给定一些生成用户列表的命令
cmd
,使用
xargs
,您可以非常轻松地做到这一点:

$cat x
用户名
你好
哇
$cat x | xargs-L 1 sh-c'printf“%s//%s\n”$(echo-n“$1”| wc-c)”“$1”{}”
11//usernameone
5//你好
6//whoami

这将为您提供所需格式的输出。我使用
user
作为文件,因此使用了
cat

i=0;for token in $(cat user); do echo -n "${#token} //$token";echo;i=$((i+1));done;echo;

…|awk'{打印长度($0)“\t“$0}”
。。。。祝你好运