Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Unix 如何删除awk中第一列和第二列下的行?_Unix_Awk - Fatal编程技术网

Unix 如何删除awk中第一列和第二列下的行?

Unix 如何删除awk中第一列和第二列下的行?,unix,awk,Unix,Awk,我有一个有两列的列表。在某些行中,第一列中的值相同。在本例中,我希望删除第二列中值较低的行。 例子: 输入: 输出: 1 10 2 20 3 35 4 20 是的,当然可以: $ awk '{a[$1]=(a[$1]<$2?$2:a[$1])} END {for (i in a) print i, a[i]}' file 1 10 2 20 3 35 4 20 试验 请给我们看看你的密码,你是对的。我想了想,但是让输入的样本值为正值会让我想到“简单”的方法。事实上,我通常会想到

我有一个有两列的列表。在某些行中,第一列中的值相同。在本例中,我希望删除第二列中值较低的行。 例子: 输入:

输出:

1  10
2  20
3  35
4  20
是的,当然可以:

$ awk '{a[$1]=(a[$1]<$2?$2:a[$1])} END {for (i in a) print i, a[i]}' file
1 10
2 20
3 35
4 20
试验
请给我们看看你的密码,你是对的。我想了想,但是让输入的样本值为正值会让我想到“简单”的方法。事实上,我通常会想到简单的方法,然后添加健全性检查。我刚刚添加了它,然后我注意到它几乎与您在之前的评论中建议的完全相同@埃德蒙顿你要么写一本书!或者至少开始在这个网站上写规范的问题/答案,这样它们就很容易找到,而不会被用户特定的情况“弄脏”。例如,看看他们在Unix和Linux中做了什么:是的,总有一天。。。。。我曾经为awk.info提供过解决方案(请参阅),但该网站的所有者退出了,所以现在不幸的是,它没有维护,我当然不想承担这项工作@fedorqui我认为不能保证,这些行将按索引排序打印。这可能取决于所使用的awk。
$ awk '{a[$1]=(a[$1]<$2?$2:a[$1])} END {for (i in a) print i, a[i]}' file
1 10
2 20
3 35
4 20
awk '{a[$1]=(($1 in a) && a[$1]>$2?a[$1]:$2)}
     END {for (i in a) print i, a[i]}' file
$ cat a
1  10
2  20
3  -15
3  -5
3  -35
4  20
$ awk '{a[$1]=(($1 in a) && a[$1]>$2?a[$1]:$2)} END {for (i in a) print i, a[i]}'  a
1 10
2 20
3 -5
4 20