gpt4 book ai didi

linux - 在 Linux 中使用 shell 将字段向左和向上移动到文件中存在空格的位置

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:05 25 4
gpt4 key购买 nike

我是 shell 脚本新手。我在修改文件时遇到问题。该文件包含数字和字母值:例如

    QWEE123

1.18E+00 1.28E+00 1.22E+00 1.78E+01 1.77E+01

1.28E+00 1.18E+00 1.28E+00 1.22E+00

6.91E-01 4.20E+00 2.80E+00 7.06E-01 1.92E+00


REE234

3.18E+00 8.28E+00 9.22E+00 8.78E+01 3.77E+01

4.28E+00 7.18E+00 1.28E+00

5.91E-01 6.20E+00 4.80E+00 6.06E-01

4.18E+00 6.28E+00 2.22E+00 3.78E+01 7.77E+01

我正在寻找的输出

QWEE123

1.18E+00  1.28E+00  1.22E+00  1.78E+01  1.77E+01  
1.28E+00 1.18E+00 1.28E+00 1.22E+00 6.91E-01
4.20E+00 2.80E+00 7.06E-01 1.92E+00


REE234

3.18E+00 8.28E+00 9.22E+00 8.78E+01 3.77E+01
4.28E+00 7.18E+00 1.28E+00 5.91E-01 6.20E+00
4.80E+00 6.06E-01 4.18E+00 6.28E+00 2.22E+00
3.78E+01 7.77E+01

QWEE123和REE234下的字段有5个字段值。我想移动下面行中的值以填充空字段并使行具有 5 个字段值。在此过程中,行数可能会发生变化。我想做的是
对于 QWEE123、REE234 等以下的值(还有 2000 个与 QWEE 和 REE 类似的值,并且还有低于这些的值)。我如何使用 shell 脚本来做到这一点?

最佳答案

这对您的输入做出了一些假设,但也许可以满足您的需求:

awk '/^[^0-9]/{printf("\n%s\n",$0); n=0} 
/^[0-9]/{for (i=1;i<=NF;i++) { printf("%s%s",$i, ++n%5 ?" ":"\n")}}' input

关于linux - 在 Linux 中使用 shell 将字段向左和向上移动到文件中存在空格的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126389/

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