排序和uniq一个班轮

时间:2013-01-20 01:17:29

标签: unix awk grep

在unix中给出一个文件名是否有针对sort和uniq的oneliner? 我用Google搜索并发现以下内容但它没有排序,也不确定下面的命令在做什么...使用awk或任何其他unix工具的更好方法?

cut -d, -f1 file | uniq | xargs -I{} grep -m 1 "{}" file

另一方面,是否有一个可以在windows和unix中使用?这不重要但只是检查..

C:\Users\Chola>sort -t "@" -k2,2 email-list.txt

输入文字文件: -

436485
422636
429228
427041
433414
425810
422636
431526
428808

1 个答案:

答案 0 :(得分:4)

如果您的文件只包含数字,则每行一个:

sort -n FILENAME | uniq

sort -u -n FILENAME

(您可以在-u命令中添加sort,而不是在以下所有内容中添加uniq。)。

如果您只想提取文件的一列,然后按数字排序删除重复项,则可以执行以下操作:

cut -f7 FILENAME | sort -n | uniq

Cut假设列之间只有一个标签。如果您的文件是CSV,则可以执行以下操作:

cut -f7 -d, FILENAME | sort -n | uniq

但如果文件中的文本字段中有,(CSV将使用"保护它),则无效。

如果您想按列排序但只删除完全重复的行,则可以执行以下操作:

sort -k7,7n FILENAME | uniq

sort假设列由空格分隔。同样,如果您想与,分开,可以使用:

sort -k7,7n -t, FILENAME | uniq