请,我是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
,但是它重复了行。
请帮助使用什么代码。
答案 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