gpt4 book ai didi

awk - 从以特定模式开头的文件中获取正则表达式模式

转载 作者:行者123 更新时间:2023-12-05 09:32:40 25 4
gpt4 key购买 nike

我正在尝试构建一个 shell 脚本,它将使用 while 循环读取文件 (scope.txt)。范围文件包含网站域。该循环将遍历 scope.txt 文件并在另一个名为 urls.txt 的文件中搜索该域。我需要 grep urls.txt 文件中的模式,并且需要最后提到的结果。

范围文件包含-

google.com
facebook.com

URL 文件内容 -

https://google.com/ukhkj/sdgdsdd/
http://abcs.google.com/sdf/sg/dfg?ijkl=asffdf
https://test.com/sdvs?url=google.com
https://abcd.com/jhhhh/hghv?proxy=https://google.com
https://a.b.c.d.facebook.com/ss/sdfsdf
http://aa.b.c.d.com/dfgdfg/sgfdfg?url=https://google.com

我需要的输出-

https://google.com/ukhkj/sdgdsdd/
http://abcs.google.com/sdf/sg/dfg?ijkl=asffdf
https://a.b.c.d.facebook.com/ss/sdfsdf

因为生成的输出包含 scope.txt 文件中提到的特定域的所有域和子域。

我试图构建一个 shell 脚本文件,但没有得到想要的输出shell脚本内容-

while read -r line; do
cat urls.txt | grep -e "^https\:\/\/$line\|^http\:\/\/$line"
done < scope.txt

最佳答案

您可以使用此 grep + sed 解决方案:

grep -Ef <(sed 's/\./\\&/g; s~^~^https?://([^.?]+\\.)*~' scope.txt) urls.txt

https://google.com/ukhkj/sdgdsdd/
http://abcs.google.com/sdf/sg/dfg?ijkl=asffdf
https://a.b.c.d.facebook.com/ss/sdfsdf

sed 命令的输出是构建我们在 grep 中使用的正确正则表达式:

sed 's/\./\\&/g; s~^~^https?://([^.?]+\\.)*~' scope.txt

^https?://([^.?]+\.)*google\.com
^https?://([^.?]+\.)*facebook\.com

关于awk - 从以特定模式开头的文件中获取正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67852412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com