bash grep'随机匹配'字符串
有没有办法通过bash从文本文件中抓取'随机匹配'字符串?bash grep'随机匹配'字符串
我目前正在通过bash抓取一个下载链接,从在线文本文件卷曲& grep。
例子:
DOWNLOADSTRING="$(curl -o - "http://example.com/folder/downloadlinks.txt" | grep "$VARIABLE")"
从包含
http://alphaserver.com/files/apple.zip
http://alphaserver.com/files/banana.zip
其中$变量是一些用户选择在线的文本文件。
工程很好,但我想添加一些镜像文本文件。
所以当变量“香蕉”被选择,这是我用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抓住一个随机的'banana'字符串吗? (而不是全部)
看到这个问题,看看如何得到一个随机行后grep。 rl
似乎是一个很好的候选
What's an easy way to read random line from a file in Unix command line?
然后做一个grep ... | rl | head -n 1
试试这个:
DOWNLOADSTRING="$(curl -o - "http://example.com/folder/downloadlinks.txt" | grep "$VARIABLE")" |
sort -R | head -1
输出将是随机排序,然后第一行会被选中。
请注意“|”是一个命令分隔符(如“;”),所以你不需要行续字符“\” – 2011-06-16 18:41:39
我想我曾经知道!我是这样说的,因为我不确定是否需要反斜杠;但无论如何,我确定。感谢您指出,我会编辑答案。 – 2011-06-16 22:20:43
选择第一个匹配的“字符串”就足够了吗?这可以用'grep -m 1 banana'完成。标志-m指定找到的最大行数 – bbaja42 2011-06-16 17:18:35