从一个单位为 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
我尝试过使用 shuf
和 sort -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
我想 select 从文件中随机 lines/units 但单位由 2 行组成。
例如一个文件看起来像这样
Adam
Apple
Mindy
Candy
Steve
Chips
David
Meat
Carol
Carrots
我想随机子 select 让我们说 2 个单元组
例如
Adam
Apple
David
Meat
或
Steve
Chips
Carol
Carrots
我尝试过使用 shuf
和 sort -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