从一个单位为 2 行的文件中随机选择(单位)。

Randomly selecting (units) from a file where a unit is 2 lines.

我想 select 从文件中随机 lines/units 但单位由 2 行组成。

例如一个文件看起来像这样

Adam
Apple
Mindy
Candy
Steve
Chips
David
Meat
Carol
Carrots

我想随机子 select 让我们说 2 个单元组

例如

Adam
Apple
David
Meat

Steve
Chips
Carol
Carrots

我尝试过使用 shufsort -R,但它们只能随机播放 1 行。有人可以帮我吗? 谢谢你。

您可以通过 shuf 在洗牌前加入行来做到这一点(如果行描述单个项目,对于一般的文件格式来说这可能不是一个坏主意):

$ < file sed -e 'N;s/\n/:/' | shuf | head -1 | tr ':' '\n'
Carol
Carrots

sed一次加载两行,并用冒号连接它们。

在正确范围内选择一个随机数,确保它是奇数(如果需要),然后使用 sed 打印 2 行:

$ a=$(expr $RANDOM % \( $(wc -l < input) / 2 \) \* 2 + 1)
$ sed -n -e ${a}p -e $((a+1))p input

与其选择要打印的行,不如遍历文件并以特定概率打印每一行 "unit"。例如,要打印(大约)文件中 "units" 的 10%,您可以这样做:

awk 'BEGIN{srand()} NR%2 && (rand() < .1) {print; getline; print}' input