gpt4 book ai didi

awk - linux csv文件将列连接成一列

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

我一直在寻找用 sed、awk 或 cut 来做到这一点。我愿意使用可以通过管道传输数据的任何其他命令行程序。

我有大量以逗号分隔的数据。行有 14 到 20 列。我需要递归地将第 10 列与每行第 11 列连接起来,这样每一行正好有 14 列。换句话说,这:

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p

会变成:
a,b,c,d,e,f,g,h,i,jkl,m,n,o,p

我可以得到前 10 列。我可以得到最后 N 列。我可以连接列。我想不出如何在一行中完成它,这样我就可以通过它传递无穷无尽的数据流,最终每行正好有 14 列。

示例(按要求):

一行中有多少列?
sed 's/[^,]//g' | wc -c

获取前 10 列:
cut -d, -f1-10

获取最后 4 列:
rev | cut -d, -f1-4 | rev

连接第 10 列和第 11 列,之后显示第 1-10 列:
awk -F',' ' NF { print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10$11}'

最佳答案

Awk 解决方案:

awk 'BEGIN{ FS=OFS="," }
{
diff = NF - 14;
for (i=1; i <= NF; i++)
printf "%s%s", $i, (diff > 1 && i >= 10 && i < (10+diff)?
"": (i == NF? ORS : ","))
}' file

输出:
a,b,c,d,e,f,g,h,i,jkl,m,n,o,p

关于awk - linux csv文件将列连接成一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135518/

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