【发布时间】:2016-09-03 22:18:15
【问题描述】:
如何使用 awk 或 sed 对包含一组点的以下 file.txt 进行排序
1.0 -0.6486
0.8 -0.2384
-0.2 0.0750
-0.2 0.0750
0.6 0.0754
0.4 0.3150
0.2 0.4985
0.1 0.5742
-0.1 0.7003
-0.2 0.7528
-0.4 0.8416
-0.6 0.9133
-0.8 0.9721
-1.0 1.0208
1.0 2.4600
0.8 2.5526
0.6 2.6431
0.4 2.7286
0.2 2.8070
0.1 2.8433
-0.1 2.9098
-0.2 2.9400
-0.4 2.9948
-0.6 3.0428
-0.8 3.0849
-1.0 3.1218
我想删除行 {-0.2, 0.0750} 和 (-0.2, 0.0750) 并将文件的最终形式为:
1.0 -0.6486
0.8 -0.2384
0.6 0.0754
0.4 0.3150
0.2 0.4985
0.1 0.5742
-0.1 0.7003
-0.2 0.7528
-0.4 0.8416
-0.6 0.9133
-0.8 0.9721
-1.0 1.0208
1.0 2.4600
0.8 2.5526
0.6 2.6431
0.4 2.7286
0.2 2.8070
0.1 2.8433
-0.1 2.9098
-0.2 2.9400
-0.4 2.9948
-0.6 3.0428
-0.8 3.0849
-1.0 3.1218
我需要一个脚本,它可以在 0.1 的步骤中检查从 1.0 到 -1.0 并删除任何不遵循降序的行,在这种情况下是两个点 -0.2 并将“排序”集写入一个新文件。 我是 Linux 新手。
【问题讨论】:
-
如果您添加到目前为止您尝试过的内容,我们将不胜感激
-
sed 不是一个很好的工具。
-
一个问题中有两个要求,而且没有有效的努力。嗯,投票结束这个问题是题外话。
-
阅读 Arnold Robbins 所著的《Effective Awk Programming, 4th Edition》一书。您需要将 RS 设置为 null 和 `FS='\t' 以使用段落模式,并使用 PROCINFO["sorted_in"] 在每条记录中的字段上进行条件打印。在您尝试之后,如果您有任何问题,请告诉我们。