Вы можете сделать это в awk
, но получение случайного выбора строк будет сложным и потребует написания довольно большого количества кода. Вместо этого я бы использовал awk
, чтобы получить строки, соответствующие вашим критериям, а затем использовал стандартный инструмент shuf
, чтобы выбрать случайный выбор:
$ awk '$3-$2>3 && $3-$2 < 10' file | shuf -n2
g 1 8
a 1 5
Если вы запустите это несколько раз, вы увидите, что вы получите случайный набор строк:
$ for i in {1..5}; do awk '$3-$2>3 && $3-$2 < 10' file | shuf -n2; echo "--"; done
g 1 8
e 6 14
--
g 1 8
e 6 14
--
b 4 12
g 1 8
--
b 4 12
e 6 14
--
e 6 14
b 4 12
--
Инструмент shuf
является частью GNU coreutils, поэтому он должен быть установлен по умолчанию в большинстве систем Linux и легко доступен для большинства любых *nix. .