Использование только vanilla sed и awk и без использования $ RANDOM, простой, экономичный и достаточно быстрый "однострочный" для выбора одной строки псевдослучайно из файла с именем FILENAME выглядит следующим образом:
sed -n $(awk 'END {srand(); r=rand()*NR; if (r<NR) {sub(/\..*/,"",r); r++;}; print r}' FILENAME)p FILENAME
(Это работает, даже если FILENAME пусто, и в этом случае строка не выводится.)
Одним из возможных преимуществ этого подхода является то, что он вызывает rand () только один раз.
Как указал @AdamKatz в комментариях, другой возможностью будет вызывать rand () для каждой строки:
awk 'rand() * NR < 1 { line = $0 } END { print line }' FILENAME
(Простое доказательство правильности может быть дано на основе индукции.)
Предостережение о rand()
"В большинстве реализаций awk, включая gawk, rand () начинает генерировать числа из одного и того же начального номера или seed при каждом запуске awk."
- https://www.gnu.org/software/gawk/manual/html_node/Numeric-Functions.html