我在这个问题上苦苦挣扎了两个星期,无法深入探究。 基本上,我必须显示系统中所有具有由字母数字字符组成的登录名的登录名(用户),以及使用awk的数字总和。 基本上来自此文件:
123molly456:x:98:98::/home/molly:/bin/bash
molly456:x:98:98::/home/molly:/bin/bash
molly:x:98:98::/home/molly:/bin/bash
输出必须为:
123molly456 21
molly456 15
谢谢。
答案 0 :(得分:0)
<file awk -F : '
$1 ~ /^[[:alnum:]]+$/ {
for (i=1; i<10; i++) t += i*gsub(i,i,$1)
print $1,t
}
'
-F :
-分为:
$1 ~
-$1
必须为“字母数字” for
-测试从1到9的数字gsub
-计算i
中$1
的出现(我们不更改$1
)t+=
-累积结果print
-输出总计答案 1 :(得分:0)
请您尝试遵循。(应该在各种awk
中使用)
awk -F':' '
{
val=$1
gsub(/[^0-9]+/,"",$1)
gsub(/./,"& ",$1)
num=split($1,array," ")
for(i=1;i<=num;i++){
sum+=array[i]
}
if(sum!=""){
print val,sum
}
val=sum=""
}' Input_file
答案 2 :(得分:0)
$ awk -F':' '
{
id = $1
gsub(/[^0-9]/,"",id)
lgth = length(id)
}
lgth {
sum = 0
for (i=1; i<=lgth; i++) {
sum += substr(id,i,1)
}
print $1, sum
}
' file
123molly456 21
molly456 15