Unix bash: select 行在一列中具有唯一值,基于另一列的值
Unix bash: select rows with unique value in one column, based on value of another column
我有一个包含两列的文件,如下所示:
1 3
1 4
2 3
3 3
4 3
4 4
我想把它做成一个文件,第一列有唯一的值,重复的行只保留第二列有最大值的行,所以新文件看起来像这样:
1 4
2 3
3 3
4 4
关于如何使用 bash/awk/etc 实现此目的的任何想法?
使用 awk
,您可以使用关联数组来管理此操作,该数组的键为第 1 列,值为第 2 列的最大值:
awk ' > a[]{a[] = } END{for (i in a) print i, a[i]}' file
1 4
2 3
3 3
4 4
能否请您尝试关注并告诉我这是否对您有帮助,它将只为您提供 1 美元的最新值以及与 Input_file 的 1 美元相同顺序的非重复值.
awk '!a[]{b[++i]=} {a[]=[=10=];} END{for(j=1;j<=i;j++){print a[b[j]]}}' Input_file
简单使用sort
:
sort -k2,2rn file|sort -uk1,1n
我有一个包含两列的文件,如下所示:
1 3
1 4
2 3
3 3
4 3
4 4
我想把它做成一个文件,第一列有唯一的值,重复的行只保留第二列有最大值的行,所以新文件看起来像这样:
1 4
2 3
3 3
4 4
关于如何使用 bash/awk/etc 实现此目的的任何想法?
使用 awk
,您可以使用关联数组来管理此操作,该数组的键为第 1 列,值为第 2 列的最大值:
awk ' > a[]{a[] = } END{for (i in a) print i, a[i]}' file
1 4
2 3
3 3
4 4
能否请您尝试关注并告诉我这是否对您有帮助,它将只为您提供 1 美元的最新值以及与 Input_file 的 1 美元相同顺序的非重复值.
awk '!a[]{b[++i]=} {a[]=[=10=];} END{for(j=1;j<=i;j++){print a[b[j]]}}' Input_file
简单使用sort
:
sort -k2,2rn file|sort -uk1,1n