Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
在linux中随机选择行而不重复_Linux - Fatal编程技术网

在linux中随机选择行而不重复

在linux中随机选择行而不重复,linux,Linux,拜托,我需要帮助,因为我是linux新手。 我有一个包含数千行的重复文件。我想根据第一列随机选择此文件中的行,而不重复任何行。例如,我有一个这样的文件 233 7 233 8 244 9 244 8 244 7 255 5 288 6 300 4 300 5 我希望输出是 233 7 244 8 255 5 288 6 300 4 我已经使用了shuf-nfile>newfile,但它会重复行。 请帮助了解要使用的代码 这样试试看 sort -n -u te

拜托,我需要帮助,因为我是linux新手。 我有一个包含数千行的重复文件。我想根据第一列随机选择此文件中的行,而不重复任何行。例如,我有一个这样的文件

233  7
233  8
244  9
244  8
244  7
255  5
288  6
300  4 
300  5  
我希望输出是

233  7
244  8
255  5
288  6
300  4
我已经使用了shuf-nfile>newfile,但它会重复行。 请帮助了解要使用的代码

这样试试看

sort -n -u test.txt | shuf -n 1
我想要的是,选择不限于第一行。我希望它能在某种情况下选择第一种,在另一种情况下也能选择第二种

按照我的理解,我将重新表述您的需求:您有一个2列输入文件,如您的问题所示,在第一列中使用重复的值进行排序。您需要的输出是,对于第一列的每个唯一值,都包含一个随机行,其中包含来自输入的该值

此awk命令通过简单地将按第1列值分组的输入行提供给shuf-n1的不同实例来实现这一点:


随机性和唯一性是矛盾的:如果它们是唯一的,它们就不再是随机的。但是,您可以使用uniq或sort-u删除重复项。您好!!给你一个想法;可以使用python读取和处理文件。编写一个脚本,打开文件并读取集合中的所有行,删除第二个数字,然后使用“拆分”来执行此操作。这样就得到了一个没有重复数字的数组。然后用rand取一个。之后,您可以使用python myscript.pythanker@Simonare运行脚本。这很有帮助。但是,我想要的是,选择不限于首先出现的行。我希望它能在某种情况下选择第一种,在另一种情况下也能选择第二种。我的第二列是基于年龄的,如果只选择了第一行,那么我只剩下一个文件,其中包含我想要避免的较年轻的动物。谢谢Armali。这很好用。我自己也不会想到这个代码。谢谢
awk '$1 != c { close("shuf -n1"); c = $1 } { print|"shuf -n1" }' file