1.gui Qxx 16
2.gu Qxy 23
3.guT QWS 18
4.gui Qxr 21
Run Code Online (Sandbox Code Playgroud)
我想根据第3列中的值对文件进行排序,所以我使用:
sort -rnk3 myfile
2.gu Qxy 23
4.gui Qxr 21
3.guT QWS 18
1.gui Qxx 16
Run Code Online (Sandbox Code Playgroud)
现在我必须输出:(以3.gui开头的行是因为4.gui的行有更大的值)
2.gu Qxy 23
4.gui Qxr 21
1.guT QWS 18
Run Code Online (Sandbox Code Playgroud)
我不能使用,-head因为我有数百万行,我不在哪里切,我无法想办法使用,-uniq因为它对待一条线作为整体,因为我不能告诉-uniq看第一列,它算一条线它是唯一的输出它 - 这是正常的 - .我知道-uniq可以忽略许多字符但是从示例中可以看出第一列可能有各种字符数.
请指教..
试试这个:
sort -rnk3 myfile | awk -F"[. ]" '!a[$2]++'
Run Code Online (Sandbox Code Playgroud)
awk根据第二列删除重复项.这实际上是一个着名的awk语法来删除重复.维护一个数组,保持第二个字段的记录.每次打印记录之前,都会在数组中检查第二个字段.如果不存在,则打印,否则将其丢弃,因为它是重复的.这是使用++实现的.第一次,当遇到记录时,此++将自其修复后的计数保持为0.随后出现的事件会增加被否定的价值变成虚假的价值.