gpt4 book ai didi

bash - 将不同长度的多列组合成BASH中的一列

转载 作者:行者123 更新时间:2023-11-29 09:26:23 26 4
gpt4 key购买 nike

我需要使用 BASH 将不同长度的列合并为一列。这是一个示例输入文件:

11  1 2   3 4   5 6   7 8
12 1 2 3 4 5 6 7 8
13 1 2 3 4 5 6 7 8
14 1 2 5 6 7 8
15 1 2 7 8

我想要的输出:

1
1
1
1
1
3
3
3
5
5
5
5
7
7
7
7
7

输入数据是成对的列,如图所示。每对由固定数量的空格隔开。一对列中的值由一个空格分隔。提前致谢!

最佳答案

使用 GNU awk 进行固定宽度的字段处理:

$ cat file
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 5 6 7 8
1 2 7 8

$ cat tst.awk
BEGIN{ FIELDWIDTHS="1 1 1 3 1 1 1 3 1 1 1 3 1 1 1" }
{
for (i=1;i<=NF;i++) {
a[NR,i] = $i
}
}
END {
for (i=1;i<=NF;i+=4)
for (j=1;j<=NR;j++)
if ( a[j,i] != " " )
print a[j,i]
}

$ gawk -f tst.awk file
1
1
1
1
1
3
3
3
5
5
5
5
7
7
7
7
7

关于bash - 将不同长度的多列组合成BASH中的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460881/

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