【发布时间】:2015-03-11 12:13:53
【问题描述】:
在我的工作流程中,创建了包含带有两行标题的简单表格(见帖子末尾)的文件。我想按编号订购这些表格:
(head -n 2 && tail -n +3 | sort -n -r) > ordered.txt
这很好,但我不知道如何拆分文件,以便我可以订购每个表格并将其打印在一个文件中。我的做法是:
awk '/^TARGET/ {(head -n 2 && tail -n +3 | sort -n -r) >> ordered.txt}' output.txt
但是,这会导致错误消息。我想避免任何中间输出文件。我的 awk 命令中缺少什么?
输入文件如下所示:
TARGET 1
Sample1 Sample2 Sample3 Pattern
3 3 3 z..........................Z........................................z.........Z...z
147 171 49 Z..........................Z........................................Z.........Z...Z
27 28 13 z..........................Z........................................z.........z...z
75 64 32 Z..........................Z........................................Z.........z...Z
TARGET 2
Sample1 Sample2 Sample3 Pattern
2 0 1 z..........................z........................................z.........Z...Z
21 21 7 z..........................Z........................................Z.........Z...Z
1 0 0 ...........................Z........................................Z.............Z
4 8 6 Z..........................Z........................................z.........Z...z
2 0 1 Z..........................Z........................................Z.........Z....
1 0 0 z..........................Z........................................Z.............Z
1 0 0 z...................................................................Z.........Z...Z
TARGET 3
Sample1 Sample2 Sample3 Pattern
1 0 0 z..........................Z........................................z.............z
1 3 0 z..........................z........................................Z.........Z...Z
1 1 0 Z..........................Z........................................Z.............z
1 0 0 Z..........................Z........................................Z.............Z
0 1 2 ...........................Z........................................Z.........Z...Z
0 0 1 z..........................z........................................z..............
我的输出应该是这样的 - 没有删除任何行:
TARGET 1
Sample1 Sample2 Sample3 Pattern
147 171 49 Z..........................Z........................................Z.........Z...Z
75 64 32 Z..........................Z........................................Z.........z...Z
27 28 13 z..........................Z........................................z.........z...z
3 3 3 z..........................Z........................................z.........Z...z
TARGET 2
Sample1 Sample2 Sample3 Pattern
21 21 7 z..........................Z........................................Z.........Z...Z
4 8 6 Z..........................Z........................................z.........Z...z
2 0 1 z..........................z........................................z.........Z...Z
2 0 1 z..........................z........................................z.........Z...Z
1 0 0 ...........................Z........................................Z.............Z
1 0 0 ...........................Z........................................Z.............Z
1 0 0 ...........................Z........................................Z.............Z
TARGET 3
Sample1 Sample2 Sample3 Pattern
1 0 0 z..........................Z........................................z.............z
1 0 0 z..........................Z........................................z.............z
1 0 0 z..........................Z........................................z.............z
1 0 0 z..........................Z........................................z.............z
0 1 2 ...........................Z........................................Z.........Z...Z
0 0 1 z..........................z........................................z..............
【问题讨论】:
-
目前还不清楚输出应该是什么。
-
输出应该看起来像 glenn jackman 的输出,只是数字降序排列。
-
所以你想让表 2 的一半消失?
-
您的 awk 命令缺少的是 awk 语言。 awk 不是外壳,就像 C 不是外壳一样。它是一个完全独立的工具,有自己的语言。我和@Jidder 在一起——我不知道你的输出应该是什么,请附上解释以澄清。
-
不,我不想让任何一行消失。我刚刚注意到格伦的代码就是这种情况。谢谢你的提示!
标签: awk