You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk统计变量中逗号分隔的字段数量?

统计方括号内逗号分隔的节点数量

面对类似{running_db_nodes,[ejabberd@host002,ejabberd@host001]},的字符串,要统计方括号里逗号分隔的节点数,你已经用gensub提取出了节点串(比如ejabberd@host002,ejabberd@host001)存到nodes变量里,但直接用NF只能拿到原始输入行的字段数,没法统计变量里的内容。这里给你两种可行的awk写法:

方法一:利用$0重新计算字段

把nodes的内容赋值给当前记录$0,重新设置分隔符后用NF获取数量:

/running_db_nodes/ {
    nodes = gensub(/ {running_db_nodes,\[(.*)\]},/, "\\1", 1)
    $0 = nodes
    FS = ","
    print NF
}

方法二:使用split函数分割数组

用split把nodes按逗号分割成数组,数组的长度就是节点数量:

/running_db_nodes/ {
    nodes = gensub(/ {running_db_nodes,\[(.*)\]},/, "\\1", 1)
    node_count = split(nodes, temp_arr, ",")
    print node_count
}

两种方法都能准确统计nodes变量里逗号分隔的字符串数量,其中split函数的写法更直观,也不需要修改当前记录和FS,推荐使用。

内容的提问来源于stack exchange,提问作者Richlv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:05:54