如何将常量值添加到awk中的逗号分隔列表

how to add constant value to a comma separated list in awk

我有如下所示的样品丝束文件:

col1     col2      col3    col4   col5                    col6
247828  313574  55,126,184  25  4734,163,133,81,130   0,6637,8368,9333,14005

我需要将 col1 中的值添加到 col6 中的每个元素,以便输出如下所示:

col1     col2      col3    col4   col5                    col6
247828  313574  55,126,184  25  4734,163,133,81,130   247828,254465,256196,257161,261833

我试过使用

awk -F "\t" 'BEGIN{OFS="\t"}{array[arraylen++]=;for (i =0; i < arraylen; i++) print array[i];  }1' 

我想我迷路了,它在 col6 中打印了 6 个元素。有人可以帮忙解决吗。

你可以这样做:

$ cat file
247828  313574  55,126,184      25      4734,163,133,81,130     0,6637,8368,9333,14005
$ awk -v OFS='\t' '{ n = split(, a, ","); 
    s = ""; 
    for (i=1; i<=n; ++i) s = s a[i]+ (i<n?",":"");
     = s;
} 1' file 
247828  313574  55,126,184      25      4734,163,133,81,130     247828,254465,256196,257161,261833

将输出字段分隔符设置为制表符(输入的默认值不需要更改)。将第 6 个字段拆分为数组 a。遍历数组以建立第 6 个字段的新值。

正如评论中所建议的(谢谢),我没有重复分配给 </code>,而是使用了一个临时变量 <code>s。这意味着记录只写入一次,这对性能更好。

$ awk 'NR>1 {
        split(,a,/,/)
        new=""
        for (i=1;i in a;i++) {
            new = new (i>1?",":"") a[i]+
        }
        sub(/[^[:space:]]+$/,new)
    } 1' file
col1     col2      col3    col4   col5                    col6
247828  313574  55,126,184  25  4734,163,133,81,130   247828,254465,256196,257161,261833

请注意,上面的内容将保留输入文件中字段之间最初的任何白色 space。