mer*_*eri 3 shell awk delimiter
我有一个.txt文件:
a 10
b 13
a 2
b 5
c 1
Run Code Online (Sandbox Code Playgroud)
其中第一列用于标识符,第二列用于值。
如果我想使用 awk 浏览文件并对第一列中每个项目的第二列中的数字求和,然后在打印前用 * 替换它,这样输出如下,我该怎么做?
a : **
b : **
c : *
Run Code Online (Sandbox Code Playgroud)
使星数等于数字中的位数 (12 -> **, 18 -> **, 1 -> *)
awk '{gsub("12", "**"); print}' test.txt
Run Code Online (Sandbox Code Playgroud)
我试过了,但这当然不是正确的解决方案。打开任何建议。
你可以使用这个 awk:
awk '{sums[$1] += $2} END {for (i in sums) {
gsub(/./, "*", sums[i]); print i, ":", sums[i]}}' file
a : **
b : **
c : *
Run Code Online (Sandbox Code Playgroud)
您能否尝试使用所示示例进行以下,编写和测试。
awk '
FNR==NR{
arr[$1]+=$2
next
}
($1 in arr){
gsub(/./, "*", arr[$1])
print $1, ":", arr[$1]
delete arr[$1]
}
' Input_file Input_file
Run Code Online (Sandbox Code Playgroud)