строка случайного соответствия bash grep - PullRequest
0 голосов
/ 16 июня 2011

Есть ли способ получить строку с произвольным соответствием через bash из текстового файла?

В настоящее время я получаю ссылку для скачивания через bash, curl & grep из текстового файла в Интернете.

Пример:

DOWNLOADSTRING="$(curl -o - "http://example.com/folder/downloadlinks.txt" | grep "$VARIABLE")"

из текстового файла, содержащего

http://alphaserver.com/files/apple.zip
http://alphaserver.com/files/banana.zip

, где $ VARIABLE - это то, что выбрал пользователь.

Отлично работает, но я хотел добавить несколько зеркал в текстовый файл.

Таким образом, когда выбрана переменная «банан», текстовый файл, который я grep содержит:

http://alphaserver.com/files/apple.zip
http://betaserver.com/files/apple.zip
http://gammaserver.com/files/apple.zip
http://deltaserver.com/files/apple.zip
http://alphaserver.com/files/banana.zip
http://betaserver.com/files/banana.zip
http://gammaserver.com/files/banana.zip
http://deltaserver.com/files/banana.zip

код должен выбрать случайную строку «банан» и сохранить ее как «DOWNLOADSTRING»переменная.приведенный выше код может работать только с 1 строкой в ​​текстовом файле, поскольку он захватывает все «бананы».

Для чего это нужно;Я хотел добавить некоторые зеркальные ссылки для загрузки файлов в текстовом файле, и текущий код не позволяет этого.

Могу ли я позволить grep взять одну случайную банановую строку?(и не все из них)

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Смотрите этот вопрос, чтобы узнать, как получить случайную строку после grep. rl кажется хорошим кандидатом

Какой простой способ прочитать случайную строку из файла в командной строке Unix?

затем сделайте grep ... | rl | head -n 1

2 голосов
/ 16 июня 2011

Попробуйте:

DOWNLOADSTRING="$(curl -o - "http://example.com/folder/downloadlinks.txt" | grep "$VARIABLE")" |
    sort -R | head -1

Вывод будет отсортирован случайным образом, а затем будет выбрана первая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...