我想从文件中随机选择行/单位,但单位由2行组成。
例如,文件看起来像这样
亚当
苹果
柯以敏
糖果
史蒂夫
芯片
大卫
肉类
卡罗尔
胡萝卜
我想随机选择让我们说2个单位组
例如
亚当
苹果
大卫
肉
或
史蒂夫
芯片
卡罗尔
胡萝卜
我已尝试使用shuf
和sort -R
,但他们只会改变1行。有人可以帮帮我吗?
谢谢。
答案 0 :(得分:2)
你可以通过在洗牌之前加入这些行来对shuf
这样做(对于一般的文件格式,如果这些行描述单个项目,这可能不是一个坏主意):
$ < file sed -e 'N;s/\n/:/' | shuf | head -1 | tr ':' '\n'
Carol
Carrots
sed
一次加载两行,并用冒号连接它们。
答案 1 :(得分:0)
在正确的范围内选择一个随机数,确保它是奇数(如果需要),然后使用sed
打印2行:
$ a=$(expr $RANDOM % \( $(wc -l < input) / 2 \) \* 2 + 1)
$ sed -n -e ${a}p -e $((a+1))p input
答案 2 :(得分:0)
不是选择要打印的行,而是可以遍历文件并打印每个&#34;单元&#34;具有特定概率。例如,打印(大约)10%的&#34;单位&#34;在文件中,您可以这样做:
awk 'BEGIN{srand()} NR%2 && (rand() < .1) {print; getline; print}' input