如何使用正则表达式获取2个文件以在行尾找到匹配项

时间:2016-10-31 18:43:12

标签: linux bash unix awk grep

我有以下两个文件:

full-domains.txt包含:

example1.com
example2.net
example3.org
example4.info
example5.co

extensions.txt包含:

net
org
co

我想将扩展循环到grep命令中,该命令只匹配以扩展文件中的模式结尾的行。

我认为它类似于:grep -Ff extensions.txt full-domains.txt但是我不确定在哪里添加语法以使其与$的行尾相匹配。

输出应为:

example2.net
example3.org
example5.co

任何积极的意见都受到高度赞赏。我应该补充一点,除了grep之外,我也对其他解决方案持开放态度。

3 个答案:

答案 0 :(得分:4)

这显然是awk的工作:

$ awk -F'.' 'NR==FNR{exts[$0]; next} $NF in exts' extensions.txt full-domains.txt
example2.net
example3.org
example5.co

答案 1 :(得分:1)

我会使用xargs进行多次grep搜索。

$ xargs -a extensions.txt -L1 -I{} grep "{}$" full-domains.txt
example2.net
example3.org
example5.co

xargs参数:

  • -a extensions.txt - 从文件中读取输入
  • -L1 - 逐行
  • -I{} - 从命令
  • 中替换{}
  • grep "{}$" - 为每个分机执行的命令

答案 2 :(得分:1)

您可以尝试以下解决方案 -

Setting up automysqlbackup (2.6+debian.3-1ubuntu1) ...
Could not open required defaults file: /etc/mysql/debian.cnf
Fatal error in defaults handling. Program aborted
Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
Processing triggers for ufw (0.34~rc-0ubuntu2) ...
Processing triggers for ureadahead (0.100.0-16) ...