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

时间:2019-02-25 17:51:59

标签: 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 -n N file > newfile,但是它重复了行。 请帮助使用什么代码。

2 个答案:

答案 0 :(得分:0)

以这种方式尝试

sort -n -u test.txt | shuf -n 1

答案 1 :(得分:0)

  

我想要的是选择内容不仅限于第一行。我希望它可以在某些情况下选择第一个,在另一个情况下选择第二个。

据我所知,我将重新陈述您的要求:您有一个2列的输入文件,如您的问题所示,在第一列中以重复的值排序。您需要一个输出,该输出的第一列的每个唯一值都包含一个随机行,该行包含来自该输入的值。

awk命令通过将输入行按第一列值分组的赋予shuf -n1与众不同的实例,来产生此效果:

awk '$1 != c { close("shuf -n1"); c = $1 } { print|"shuf -n1" }' file