Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用shell脚本获取最新的行_Shell_Unix_Awk - Fatal编程技术网

使用shell脚本获取最新的行

使用shell脚本获取最新的行,shell,unix,awk,Shell,Unix,Awk,我有一个格式与此类似的文件: 10:26:50 AEYTCVAETK 2 genes ADUm.1024,ADUm.5198,ADUm.750 10:27:51 AIQLTGK 1 genes ADUm.1999,ADUm.3560 10:35:12 AIQLTGK 8 genes ADUm.1999,ADUm.3560 10:42:26 AEYTCVAETK 2 genes ADUm.1024,ADUm.5198,ADUm.750 1

我有一个格式与此类似的文件:

10:26:50 AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
10:27:51 AIQLTGK        1   genes ADUm.1999,ADUm.3560
10:35:12 AIQLTGK        8   genes ADUm.1999,ADUm.3560
10:42:26 AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
10:50:43 KHEPPTEVDIEGR  5   genes ADUm.367
10:52:23 VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
10:52:26 AIQLTGK        10  genes ADUm.1999,ADUm.3560
10:55:16 VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750
10:55:58 VSSILEDKILSR   2   genes ADUm.2146,ADUm.5750
我想为第2列中名称的每个不同值打印最新一行,这意味着上述输入将变成:

10:42:26 AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
10:52:26 AIQLTGK        10  genes ADUm.1999,ADUm.3560
10:50:43 KHEPPTEVDIEGR  5   genes ADUm.367
10:52:23 VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
10:55:58 VSSILEDKILSR   2   genes ADUm.2146,ADUm.5750
我该怎么做


如果文件已按时间排序,请使用awk表示感谢和问候

awk '{a[$2]=$0}END{for (i in a) print a[i]}' file|sort -n

10:42:26 AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
10:50:43 KHEPPTEVDIEGR  5   genes ADUm.367
10:52:23 VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
10:52:26 AIQLTGK        10  genes ADUm.1999,ADUm.3560
10:55:58 VSSILEDKILSR   2   genes ADUm.2146,ADUm.5750
如果原始文件未排序,请运行以下操作:

awk '{s=$1;gsub(/:/,"",s);if (s>max[$2]){max[$2]=s;l[$2]=$0}}END{for (i in max) print l[i]}' file|sort -n

文件是否已按时间排序?谢谢,我正在这样做,但我没有打印[I],而是只打印了第二列的
I
,让我测试一下,我肯定会接受答案:)但为什么要使用sort-n?