【发布时间】:2018-04-06 19:16:20
【问题描述】:
我有一个数据,它没有按照正确的字段分隔符格式化(这是 awk 擅长的)。但是,据我所知,数据是固定宽度的。
NODE S1 S2 S3 SINT SEQV
1 0.14919 -0.58396E-001-0.71230 0.86149 0.77873
2 0.56037E-001 0.23261E-002-0.37154 0.42757 0.40341
3 0.52036E-001 0.19762E-001-0.27222 0.32426 0.30939
4 0.59765E-001 0.22059E-001-0.24529 0.30505 0.28806
5 0.70704E-001-0.51976E-002-0.13862 0.20932 0.18354
6 0.11906 0.44607E-001-0.17493 0.29399 0.26474
7 0.25540 0.95993E-002-0.43110 0.68650 0.60246
8 0.52246E-001-0.47008E-001-0.35167 0.40391 0.36456
9 0.32215E-001-0.62291E-001-0.28800 0.32021 0.28497
10 0.28072E-001-0.68269E-001-0.28304 0.31111 0.27586
11 0.25990E-001-0.78663E-001-0.28626 0.31225 0.27527
12 0.26657E-001-0.79217E-001-0.29507 0.32173 0.28400
预期的输出是这样的(其他列中的数字可以具有类似于 S2 中的格式,在数据的其他部分中):
NODE S1 S2 S3 SINT SEQV
1 0.14919 -0.58396E-001 -0.71230 0.86149 0.77873
2 0.56037E-001 0.23261E-002 -0.37154 0.42757 0.40341
3 0.52036E-001 0.19762E-001 -0.27222 0.32426 0.30939
4 0.59765E-001 0.22059E-001 -0.24529 0.30505 0.28806
5 0.70704E-001 -0.51976E-002 -0.13862 0.20932 0.18354
6 0.11906 0.44607E-001 -0.17493 0.29399 0.26474
7 0.25540 0.95993E-002 -0.43110 0.68650 0.60246
8 0.52246E-001 -0.47008E-001 -0.35167 0.40391 0.36456
9 0.32215E-001 -0.62291E-001 -0.28800 0.32021 0.28497
10 0.28072E-001 -0.68269E-001 -0.28304 0.31111 0.27586
11 0.25990E-001 -0.78663E-001 -0.28626 0.31225 0.27527
12 0.26657E-001 -0.79217E-001 -0.29507 0.32173 0.28400
主要问题是,有时列用空格分隔,有时没有空格('-' 号占据空格),即没有适当的字段分隔符。我发现了一个类似的问题here,但该数据在字段分隔符方面是一致的。根据我的想法,可能有两种方法,
- 使用字符长度。例如,从第二行开始,每行字符为 74 或 75 个。
- 使用字段宽度:不知道是否可以使用 AWK。
我是 AWK 的新手,我知道使用其他一些工具可能很容易,但我想知道是否可以使用 awk 分离/提取这些列。我在 MacOS 的终端中使用 awk。
【问题讨论】:
-
一切皆有可能
awk请在您的帖子中发布预期的输出。