как выбрать несколько случайных строк из списка?
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ефрейтор
- Сообщения: 51
- Зарегистрирован: 2008-02-23 19:02:38
как выбрать несколько случайных строк из списка?
есть список, надо получить из него несколько случайных строк.
раньше использовал gsort -R | head -n
переехал на новый сервер (была freebsd 7.2, стала 8.1), и gsort почему-то нет, в т.ч. в портах.
мне подойдет любое решение, которое позволяет выдергивать заданное кол-во случайных строк.
раньше использовал gsort -R | head -n
переехал на новый сервер (была freebsd 7.2, стала 8.1), и gsort почему-то нет, в т.ч. в портах.
мне подойдет любое решение, которое позволяет выдергивать заданное кол-во случайных строк.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- ст. лейтенант
- Сообщения: 1375
- Зарегистрирован: 2010-02-05 0:21:40
Re: как выбрать несколько случайных строк из списка?
в bash'e есть $RANDOM.
Код: Выделить всё
N=`cat $FILE |wc -l`
num=5
for ((i=1; i<=$num; i++))
do
R=$(($RANDOM % $N))
echo $R
head -n $R $FILE |tail -1
done
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: как выбрать несколько случайных строк из списка?
Во Фре есть замечательная утилита jot. Кроме всего прочего, умеет генерировать случайные(конечно псевдослучайные) числа в заданном диапазоне.
Пример получения двух случайных номеров строк из файла:
Пример получения двух случайных номеров строк из файла:
Код: Выделить всё
#!/bin/sh
#
# 2011-02-17 17:34:18
# Description
# version 1
#
# получить кол-во строк в файле
STR_NUM=`wc -l $1 | awk '{print $1}'`
# получить первый случайный номер строки
NUM1=$(jot -r 1 1 $STR_NUM)
# получить второй случайный номер строки
NUM2=$(jot -r 1 1 $STR_NUM)
# для гарантирования того, что получили разные номера
while [ "$NUM1" -eq "$NUM2" ]
do
NUM2=$(jot -r 1 1 $STR_NUM)
done
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- ефрейтор
- Сообщения: 51
- Зарегистрирован: 2008-02-23 19:02:38
Re: как выбрать несколько случайных строк из списка?
Спасибо за советы!
А чего вообще с этим gsort произошло, почему он исчез?
Вообще на самом деле моя задача - удалять несколько случайных записей из таблицы pf. Раньше делалось так:
/sbin/pfctl -t table -Ts | /usr/local/bin/gsort -R | head -n 5 | /sbin/pfctl -t table -T del -f -
В принципе меня устроит и вариант удаления не случайных, а просто несколько ip, которые были добавлены раньше всего.
А чего вообще с этим gsort произошло, почему он исчез?
Вообще на самом деле моя задача - удалять несколько случайных записей из таблицы pf. Раньше делалось так:
/sbin/pfctl -t table -Ts | /usr/local/bin/gsort -R | head -n 5 | /sbin/pfctl -t table -T del -f -
В принципе меня устроит и вариант удаления не случайных, а просто несколько ip, которые были добавлены раньше всего.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: как выбрать несколько случайных строк из списка?
А что такого особенного есть в gsort, чего нет в обычном sort ?
Может обычного, стандартного sort хватит?
Может обычного, стандартного sort хватит?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- ефрейтор
- Сообщения: 51
- Зарегистрирован: 2008-02-23 19:02:38
Re: как выбрать несколько случайных строк из списка?
sort не умеет сортировать в случайном порядке, а gsort умеет (ключ -R)kpp писал(а):А что такого особенного есть в gsort, чего нет в обычном sort ?
Может обычного, стандартного sort хватит?
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: как выбрать несколько случайных строк из списка?
Гм.. Но это уже не сортировка, а "перепутывание".
Можно стандартному sort задавать разные параметры сортировки
Можно стандартному sort задавать разные параметры сортировки
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- ефрейтор
- Сообщения: 51
- Зарегистрирован: 2008-02-23 19:02:38
Re: как выбрать несколько случайных строк из списка?
Ну, типа того.kpp писал(а):Гм.. Но это уже не сортировка, а "перепутывание".
В конечном итоге все, что мне нужно - случайным образом удалять записи из таблицы pf.