我需要使用UNIX命令行脚本从文件中获取11个随机行,这些行被组合在一起。例如
随机源文件:
1
2
3
4
5
6
7
8
9
10
11
############
12
13
14
15
16
17
18
19
20
21
22
运行./myscript
应该会给我:
1
2
3
4
5
6
7
8
9
10
11
或
12
13
14
15
16
17
18
19
20
21
22
答案 0 :(得分:2)
tail -n +$(($RANDOM %
($(wc -l "$filename" | cut -d' ' -f1) - 11))) "$filename" |
head -n 11
使用
export filename=/etc/dictionaries-common/words
set -o xtrace
第一次
~$ tail -n +$(($RANDOM % ($(wc -l "$filename" | cut -d' ' -f1) - 11))) "$filename" | head -n 11
+ head -n 11
++ wc -l /etc/dictionaries-common/words
++ cut '-d ' -f1
+ tail -n +11614 /etc/dictionaries-common/words
Moriarty's
Morin
Morin's
Morison
Morison's
Morita
Morita's
Morley
Morley's
Mormon
Mormon's
第二次
~$ tail -n +$(($RANDOM % ($(wc -l "$filename" | cut -d' ' -f1) - 11))) "$filename" | head -n 11
+ head -n 11
++ wc -l /etc/dictionaries-common/words
++ cut '-d ' -f1
+ tail -n +1661 /etc/dictionaries-common/words
Beatrice
Beatrice's
Beatrix
Beatrix's
Beatriz
Beatriz's
Beau
Beau's
Beaufort
Beaufort's
Beaujolais
答案 1 :(得分:0)
您可以尝试:
n=$((`wc -l "${file}" | cut -d' ' -f1` / 11))
m=$(($RANDOM % $n))
tail -n +$(($m * 11)) "${file}" | head -n 11