私はこの質問を課されました:最初の引数としてURLを取り、URLのHTMLでホスト/ドメインごとのリンク数の統計を出力するbashスクリプトを記述します。
たとえば、www.bbc.co.ukのようなURLを指定すると、次のように出力される可能性があります。
www.bbc.co.uk: 45
bbc.com: 1
google.com: 2
Facebook.com: 4
つまり、ページのHTMLを分析し、すべてのリンクを引き出し、href属性を調べ、同じドメインへのリンク(もちろん、その1つを図解します)と外部のリンクを決定してから、ローカルのものとリモートのもの。
ルール:スクリプトでは、標準のLinuxコマンドの任意のセットを使用できます。C、Python、Perlなどの高級プログラミング言語を使用することはできません。ただし、awk、sedなどを使用することはできます。
私は次のように解決策を思いついた:
#!/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を報告しますが、ドメインは報告しません」と言われました。目標を達成できるように?何が欠けているのですか、それともスクリプトが何をしていないのですか?必要に応じて動作させたと思いました。