Для этого вы можете использовать комбинацию awk
, sort
, head/tail
и sed
, например, с:
pax$ seq 1 100 | awk '
...$ BEGIN {srand()}
...$ {print rand() " " $0}
...$ ' | sort | head -5 | sed 's/[^ ]* //'
57
25
80
51
72
, который, как вы можете видеть, выбирает пять случайных строк из ста, сгенерированных в seq 1 100
.
Трюк awk
ставит перед каждой и каждой строкой файла префикс случайным числом и пробелом в формате "0.237788 "
, затем сортирует (очевидно) сортирует его по этому случайному числу.
Затем вы используете head
(или tail
, если у вас нет head
), чтобы получить первые (или последние) N
строки.
Наконец, sed
удалит случайное число, пробел и начало каждой строки.
Для вашего конкретного случая вы можете использовать что-то вроде (в одной строке):
awk 'BEGIN {srand()} {print rand() " " $0}' file8000.txt
| sort
| tail -3000
| sed 's/[^ ]* //'
>file3000.txt