Articles of sorting

如何实现自定义比较()为scandir()

我一直在阅读scandir(),alphasort()的手册页,显然已经塞满了他们。 但是还是无法弄清楚如何实现一个自定义的比较函数。 这是我的代码: #include <stdio.h> #include <dirent.h> #include <sys/types.h> int mySort(char*, char*); int (*fnPtr)(char*, char*); int main(){ struct dirent **entryList; fnPtr = &mySort; int count = scandir(".",&entryList,NULL,fnptr); for(count–;count>=0;count–){ printf("%s\n",entryList[count]->d_name); } return 0; } int mySort(const void* a, const void* b){ char *aNew, *bNew; if(a[0] == '.'){ *aNew = removeDot(a); } else{ aNew = a; } […]

sorting上次login时间

我有这样的输出 2015.08.03 personalCode: 12345678912, uid: 12345678-1234-1234-1234-123456789123, 2015.08.05 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.06 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.07 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.10 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.14 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.17 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.19 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.24 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.26 personalCode: 12345678912, uid: 016b353f-5b45-4ef6-b150-123456789123, 2015.08.31 personalCode: 12345678912, uid: […]

按包含小数的名称sorting文件

我在我的文件夹中有200个文件,我想按名称sorting。 这里是我的文件的一个简短的列表根据我的Linux电脑默认sorting他们的方式。 Name at 0.2142.png Name at 0.4284.png Name at 0.04284.png Name at 0.6426.png Name at 0.8568.png Name at 0.08568.png … 我想从最低到最高的名字,所以我的名单将成为 Name at 0.04284.png Name at 0.08568.png … Name at 0.2142.png Name at 0.4284.png Name at 0.8568.png … (我把elipses放在列表的中间,因为名字在0.08568.png和名字在0.2142.png之间有更多的文件)。 我还是新手编写bash文件,但我想我可以写一个sorting我的数字。 谢谢 附录: 由于文件名太长,我将它们缩写为Name at …真正的文件名是在t =时的径向速度倾斜的Planetary Vorticity ,最后是一个数字。 我希望你能理解为什么我不把它放在原来的问题上。 我也很确定我在下面的评论中说,我是Linux和Ubuntu的新手,我不知道如何创build文件列表。 我有一个MatLab代码,使用我上面提供的名称和适当的时间步骤来创build基于我的CFD数据的png文件。 当我在Linux计算机上打开文件夹时,文件会按照上面列出的方式自动sorting,我不知道为什么。 如果还有其他需要澄清的话,我会很乐意把它放在这里。

为什么使用pipe道进行sorting(Linux命令)速度慢?

我有一个大的〜8GB的文本文件,我需要做一些简单的过滤,然后sorting所有的行。 我在一台配有SSD和128GB RAM的28核心机器上。 我努力了 方法1 awk '…' myBigFile | sort –parallel = 56 > myBigFile.sorted 方法2 awk '…' myBigFile > myBigFile.tmp sort –parallel 56 myBigFile.tmp > myBigFile.sorted 令人惊讶的是,方法1需要11.5分钟,而方法2只需要(0.75 + 1 <2)分钟。 为什么sorting如此缓慢pipe道? 这不是平行吗? 编辑 awk和myBigFile并不重要,这个实验可以简单地使用seq 1 10000000 | sort –parallel 56来重复 seq 1 10000000 | sort –parallel 56 (感谢@Sergei Kurenkov),我还观察到在我的机器上使用无pipe道版本的速度提高了六倍。

Linuxsorting显示奇怪的行为

我有一个脚本,需要根据数字顺序CAT一些文件。 虽然它似乎与几百个文件正常工作,我现在遇到一些“有趣的”结果在处理一个更大的文件。 有问题的文件已被分成1289个单独的文件,命名为ABC.001-1289到ABC.1289-1289 我使用“ls -gGo ABC * | sort -hk9”来列出文件,我认为是一个人类可读的sorting顺序。 一切顺利,直到我击中ABC.763-1289: ABC.001-1289 .. ABC.763-1289 ABC.1000-1289 .. ABC.1040-1289 ABC.764-1289 .. ABC.999-1289 ABC.1041-1289 .. ABC.1289-1289 我正在考虑某种缓冲区溢出或什么的,但是我之前没有经历过这样的事情,而且还有点儿挠头,甚至开始寻求解决问题的办法。 我尝试过改变“k”值,甚至将其删除,但没有什么积极的结果。 我越看越这个我越相信一个KEYDEF是必需的,但我不能确定正确的格式来使用这个…. 有什么想法吗?

用空列对pipe道分隔文件进行sorting

我正在使用sorting来解决问题,我相信这是由于我sorting的列之前的空列。 我在文件上运行sort -n -t'|' -k4 testme -o testedsort sort -n -t'|' -k4 testme -o testedsort ,这里是被testing的输出 N|N||+006422931|+000359029|OVERLAY N|N|A|+000000020|+000000000|580 N|N|A|+000000020|+000000020|705 N|N|A|+000008035|+000000000|800 N|N|A|+000009701|+000000000|723 N|N|A.|+000009701|+001569434|742 N|N|A|+000009701|+001569434|742 N|N|A|+000013723|+000000000|DLORGN N|N|A|+000020963|+000000020|729 N|N|A|+000022110|+004066830|GRANT 看起来,除了第一个logging,一切都很好,唯一奇特的是我们有一个空的列。 有没有人看到这个,有没有关于如何解决这个问题的build议?

为什么sorting – 像这样sorting>

我有一个文件,如下所示: 4/3 4/7 3/5 3/6 2/4 当使用没有任何参数的sorting进行sorting时,它按照您所期望的排列行。 使用sort时,输出如下: 3/5 3/6 4/3 4/7 2/4 我不明白为什么会发生这种情况。

按bash中的多列进行sorting

我有一个2列“名称”和“年龄”的文件,看起来像这样: Alex, 15 Mary, 12 Alex, 28 Zoe, 16 Alex, 17 我将按字母顺序对第一列进行sorting,使用sort -t ',' -k1,1 filename.txt ,但是如果有相同的名字,我希望第二列按照它们的反向sorting原始文件,如下所示: Alex, 17 Alex, 28 Alex, 15 Mary, 12 Zoe, 17 我怎样才能做到这一点?

多个不同的顺序sorting

我有这样的数据 HOS05 23/12/2008 10AM HOS06 15/12/2008 2PM HOS62 29/12/2008 10AM HOS64 23/12/2008 2PM HOS70 26/12/2008 10AM ZFT01 06/12/2008 10AM HOS73 11/12/2008 2PM MHOS0 05/12/2008 10AM MHOS0 20/12/2008 2PM MHOS0 27/12/2010 2PM MHOS0 11/12/2008 10AM MHOS0 30/12/2009 2PM ^^ ^^^^ 我必须用^ s表示两个偏移量。 第一个突出显示的偏移量应按ASC顺序sorting,然后以DESC顺序再次突出显示。 所以我喜欢这个 sort -k 1.6,1.8 date.txt | sort -k 1.14,1.17 -r > final.txt 输出: […]

从许多csv文件中删除dups

给定n个csv文件,它们的总和最大为100 GB,我需要根据以下规则和条件删除重复的行: csv文件编号为1.csv到n.csv,每个文件大小约为50MB。 第一列是一个string键,如果它们的第一列相同,那么2行被认为是dup。 我想通过保留在稍后的文件(2.csv被认为晚于1.csv)去除dups。 我的algorithm如下,我想知道是否有更好的。 将所有文件合并成一个巨型文件 cat *.csv > one.csv sortingcsv sort one.csv >one_sorted.csv 不知道如何消除在这一点上的dups。 uniq有一个-f标志,跳过前N个字段,但在我的情况下,我想跳过除前1个字段。 我需要帮助最后一步(消除在sorting文件dups)。 还有更有效的algorithm吗?