如果在两个文件之间找到匹配,如何仅添加字符串

Dom*_*red 1 linux bash awk grep sed

我正在处理包含网址的几个文件.我尝试过使用sed,cut和grep,但我真的不确定如何处理它.如果你能让我朝着正确的方向前进,我会非常感激.

档案1:

https://example1.com
http://example2.com
Run Code Online (Sandbox Code Playgroud)

文件2:

example1.com/example1-is-https-domain/
example1.com/need-https-in-front/
example1.com/match-me-to-https/
example1.com/example-https-not-http/
example2.com/im-an-http-domain/
example2.com/must-match-to-example2/
example2.com/path-of-http/
example2.com/http-domain-not-https/
example3.com/this-should-not-match/
example3.com/this-page-is-not-required/
Run Code Online (Sandbox Code Playgroud)

期望的输出:

https://example1.com/example1-is-https-domain/
https://example1.com/need-https-in-front/
https://example1.com/match-me-to-https/
https://example1.com/example-https-not-http/
http://example2.com/im-an-http-domain/
http://example2.com/must-match-to-example2/
http://example2.com/path-of-http/
http://example2.com/http-domain-not-https/
Run Code Online (Sandbox Code Playgroud)

我的方法:

我想我可以使用grep与'//'后匹配的选项,然后需要使用另一个命令将所找到的内容粘贴在一起?这是我挣扎的地方.很感谢任何形式的帮助.

摘要:

我真的试图将正确的http或https添加到文件1和2之间的匹配域.

小智 6

让我们来看看:

awk 'BEGIN{OFS=FS="/"}NR==FNR{k[$3]=$0;next}$1 in k{$1=k[$1];print}'
Run Code Online (Sandbox Code Playgroud)

我认为它可以完成这项工作,但我没有在这里测试它.

它使用第一个文件(NR == FNR)创建一个包含所选域的字典,对于第二个文件,它在创建的字典中查找域(如果存在),然后用文件1中的完整记录替换域名,然后打印全部