【发布时间】:2019-12-10 10:45:43
【问题描述】:
我有以下文本结构。 JTT JNX JNA JNO 下面的值属于上一行。
9 8 11 56507785 93
JTT JNX JNA JNO
76 98
9 8 60 3269557 58
9 8 53 7269558 150
JTT JNX JNA JNO
132 71 45-7705678
9 8 62 439559 82
我想解析它以便在一行中打印相应的值,如下所示:
H1 H2 H3 H4 H5 JTT JNX JNA JNO
9 8 11 56507785 93 76 98
9 8 60 3269557 58
9 8 53 7269558 150 132 71 45-7705678
9 8 62 439559 82
我的问题是,当我将 awk 与 FS = 空间(默认 FS)一起使用时,它将 JTT 作为第一个字段,而 JTT 之前有 9 个空格,所以我认为应该使用一些技术来计算从左边到@ 987654324@ 并计算从开始到低于JTT JNX JNA JNO 的值的空格数,以便正确定位每个值。我的意思是,76 和 132 低于 JTT 标头,971 低于 JNX,98 低于 JNA 和 45-7705678 低于 JNO。
如何在 awk 中做到这一点?
$ awk --version
GNU Awk 5.0.0, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)
Copyright (C) 1989, 1991-2019 Free Software Foundation.
$ uname -srv
CYGWIN_NT-6.1 3.0.7(0.338/5/3) 2019-04-30 18:08
提前致谢。
【问题讨论】:
-
用
awk --version和uname -srv的输出更新你的Q。祝你好运。 -
@shellter 嗨。更新了 awk 版本和系统。
-
一定要用awk吗?
-
@Shawn Well 不需要。在 Python 或 Ruby 中,我可以选择运行它。或者任何其他可以安装在 Cygwin 上的工具