bash - 使用 Bash 从域名列表中过滤 URL 列表

标签 bash unix awk

我有一个文章列表,我想过滤该列表,以便新的文章列表只包含来自一定数量域的文章。

现在,我有一个文章列表(~500)和一个域列表(~3,000)。

如何从文章列表中删除不在我的域列表中的文章?

两者都是文本文件,我如何在 Bash 上执行?

我觉得你必须获取文章列表,获取它们的域名,将这两个东西放在一个数组中,然后将数组中的域名与列表中的域名进行比较,如果他们匹配,保留他们。如果不是,请删除该项目并转到下一个。

这是我目前所拥有的:

readarray a < ./articles
#I know "${b[@]}" is incorrect but idk how to write what I'm trying to do.
awk -F/ '{print $3}' "${a[@]}" > "${b[@]}" 
echo "${b[@]}"
# I'm lost after this

这里是输入:

文章.txt:

http://www.cbsnews.com/videos/white-house-knows-options-are-limited-in-ukraine/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFeY2uVQrvvDAMHeT-0nK2ZLNH7-g
http://www.huffingtonpost.com/2014/03/01/ukraine-russia-crimea_n_4879935.html&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFH7GY3B6swce3qiK49xGt-CwDvMA
http://www.nybooks.com/blogs/nyrblog/2014/mar/01/ukraine-haze-propaganda/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFCcWadUJiAzaxg3OSO67gVIPVxww
http://ktla.com/2014/03/01/russian-upper-house-approves-use-of-military-force-in-ukraine-as-protests-continue/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNGTkxvvAo1zSYLlA5ET54OcBsS-PA
http://deadlinelive.info/2014/03/01/you-quit-falling-for-the-war-on-terror-ukraine-coup-spawns-cold-war-redux-2014/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNE3Fa_h7xoESBkcOzXVZCQnfBfxNA
http://www.ctvnews.ca/world/russian-parliament-oks-putin-s-request-to-use-military-force-in-ukraine-1.1709506&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNGnGeo4LWoLF5Qbq2UvL58ymlNFkA
http://www.vanguardngr.com/2014/03/un-security-council-hold-emergency-talks-ukraine/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFN7YRo037au4RfxSQoeVUCcL9hhA
http://www.reddit.com/r/AdviceAnimals/comments/1z82rt/russian_troops_cross_the_border_in_ukraine/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFHkmelnoRy2TCW-eYDpIt_t-N1iA
http://criticallegalthinking.com/2014/03/01/knot-politics-thoughts-ukraine-protest/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFLMuZzbuvzpLf7a9U8MtbhCE5lJQ
http://nypost.com/2014/03/01/russia-parliament-approves-military-action-in-ukraine/&amp;ct=ga&amp;cd=CAIyAA&amp;usg=AFQjCNFpdyelZDEMUk39LmfC1tTDcQ6_FA

域.txt:

cbsnews.com
huffingtonpost.com

最佳答案

例如,如果您的文章列表在文件 articles 中并且看起来像

... article1 ........ 1.domain.com .......
... article2 ........ 1.domain.com .......
... article3 ........ 2.domain.com .......
... article3 ........ 3.domain.com .......
... article4 ........ 4.domain.com .......

并且您的域列表也在文件 domains 中,看起来像

1.domain.com 
2.domain.com 
4.domain.com

(如果不是,希望您可以提取域并将它们放入上面的文件中) 然后

grep -f domains articles > my_wish_list

只会为您提供文件域中指定的文章

关于bash - 使用 Bash 从域名列表中过滤 URL 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121023/

相关文章:

macos - OS X Shell - 'Clickable' 删除文件的脚本?

c - 复制字符串时出现段错误

linux - 通过 Telnet 发送邮件

shell - UNIX - 格式化另一个 shell 脚本 - 在 sed 中使用 awk

bash - 如何使用 awk 按列的最后一个值对列进行排序?

linux - 将一个字符串与另一个字符串的输出一起使用 - 在 Shell 脚本中

递归地使文件中的所有文本小写的 Bash 脚本

linux - printf + bash 脚本

python - 在 Python 中,getresponse() 返回什么?

regex - Grep 并仅打印字符串的开头和结尾