使用bash从文本文件中读取随机字符块的最简单方法是什么?
块是一组字符,以X
开头,以X
结尾,其中X
是字符序列,通常为"\n\n"
我们可以假设文件有短行,每行少于200个字符。 块的行数不超过20行。
我见过像get random line,get text from between two tokens这样的帖子,但这并不是我所需要的。
我可以在C中编写一个简单的程序,它将读取文件中有多少个块,从给定范围中获取一个随机数,然后搜索具有此ID的块,但必须有一个更简单的方法。
实施例:
X = "\n\n"
文件:( .
不在文件中,我用它们在代码的开头和结尾处制作“空”行。
.
first line
second line and some other text
fourth line
sixth line
seventh line, more textęęę
.
首次运行脚本,输出:
fourth line
第二次运行脚本,输出:
first line
second line and some other text
你的忠实, user2420535
答案 0 :(得分:3)
要在一次传递中从空行分隔的块文件中获得一个均匀的随机块,
awk -v RS='\n\n' '
BEGIN { srand(); }
rand() < 1.0/NR { s=$0; }
END { print s; }
' file
这是Reservoir Sampling的简单案例。