gpt4 book ai didi

awk - 统计awk中每个字段的值个数,输出表

转载 作者:行者123 更新时间:2023-12-02 08:22:08 24 4
gpt4 key购买 nike

我正在尝试计算一个大表格的每个字段中存在的元素/单词的数量。字段由空格分隔,字段元素(“单词”)由逗号分隔。该表还包含空字段(例如两个或多个连续空格),相当于 0 个元素。

例如,从这样的表格:

val1 this,is,text this,more,text  stop
val2 this,is a field
val3 end,text

这将是所需的输出:

val1 3 3 0 1
val2 0 2 1 1
val3 0 0 0 2

(我想保持第一列不变)

请注意,第一行stop值前有两个空格,表示第四个字段有0个元素。类似的事情也发生在其他线路上。

我一直在使用 awk 的 split 函数为每个字段创建一个包含所需元素数量的数组:

awk '{ for(i = 2; i <= NF; i++) {
$i=split($i,a,",") ; { if (!$i) { $i="0" }};
}; print $0}' input

我将每个字段 i 拆分为一个包含 n 元素的数组 a,并将此值分配给变量 $我。在给定字段中有 0 个元素的情况下,(!$i),$i=0

但这是我当前不需要的输出:

val1 3 3 1
val2 2 1 1
val3 2

如您所见,省略了 0 个值。我认为将 0 值分配给空字段存​​在一些问题。

谁能帮帮我?非常感谢!

最佳答案

您必须指定您想要一个空格作为字段分隔符:

awk -F"[ ]" '{str=$1 
for(i=2; i<=NF; i++){str=str" "split($i, arr, ",")}
print str}' test1

在这种情况下,输出是:

val1 3 3 0 1
val2 0 2 1 1
val3 0 0 0 2

关于awk - 统计awk中每个字段的值个数,输出表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36137986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com