gpt4 book ai didi

linux - 返回域而不是 URL 的 Bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:41 26 4
gpt4 key购买 nike

我编写了这个 bash 脚本来分析任何给定网页的 html。它实际上应该做的是返回该页面上的域。目前它返回该网页上的 URL 数量。

#!/bin/sh

echo "Enter a url eg www.bbc.com:"
read url
content=$(wget "$url" -q -O -)
echo "Enter file name to store URL output"
read file
echo $content > $file
echo "Enter file name to store filtered links:"
read links
found=$(cat $file | grep -o -E 'href="([^"#]+)"' | cut -d '"' -f2 | sort | uniq | awk '/http/' > $links)
output=$(egrep -o '^http://[^/]+/' $links | sort | uniq -c > out)
cat out

我怎样才能让它返回域而不是 URL。根据我的编程知识,我知道它应该从右边进行解析,但我是 bash 脚本的新手。有人可以帮帮我吗。这是我到目前为止的情况。

最佳答案

我知道在 awk 中有一个更好的方法来做到这一点,但你可以用 sed 来做到这一点,方法是在你的 awk '/http/' 之后附加:

| sed -e 's;https\?://;;' | sed -e 's;/.*$;;'

然后你想把你的 sort 和 uniq 移到最后。

这样整行看起来像:

found=$(cat $file | grep -o -E 'href="([^"#]+)"' | cut -d '"' -f2 | awk   '/http/' | sed -e 's;https\?://;;' | sed -e 's;/.*$;;' | sort | uniq -c > out)

你可以去掉这一行:

output=$(egrep -o '^http://[^/]+/' $links | sort | uniq -c > out)

关于linux - 返回域而不是 URL 的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879057/

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