私はファイルをダウンロードするhtmlファイルからテキストを取得するshスクリプトが必要です
wget website.com/link_123456789 -O 'testfile.txt'
そのファイルの全内容 このPastebinにあります
ただし、重要な行だけを必要とするわけではありません
<br>
<IFRAME style="max-width: 850px;" SRC="http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html" FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO width="100%" HEIGHT=450></IFRAME>
<br><br>
<p>
ファイルからtexthttp://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
が必要です。
他の文字列を操作する簡単な答えはありますか?
awk
と-F
の複数の区切り文字の使用
searchfor="vodlocker"
wget -q -O- http://Pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/ {print $4}'
出力例:
$ searchfor="vodlocker"; wget -q -O- http://Pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/ {print $4}'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
PCREでgrep
を使用(-P
):
grep -Po 'SRC="\K[^"]+(?=")' testfile.txt
sed
の場合:
sed -nr 's/.*SRC="([^"]+)".*/\1/p' testfile.txt
両方とも、二重引用符で囲まれた目的の文字列を取り、SRC=
の前にあります。
例:
% wget -q -O- http://Pastebin.com/raw/VbrXHEYd | grep -Po 'SRC="\K[^"]+(?=")'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
% wget -q -O- http://Pastebin.com/raw/VbrXHEYd | sed -nr 's/.*SRC="([^"]+)".*/\1/p'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
彼は対話型のシェルスクリプトを要求したので、これが代替手段である可能性があります(htmlがPCにダウンロードされると仮定します)。以下をGeditにコピーしてください:
#!/bin/sh
echo -n "Please enter the name of the website (such as vodlocker): "
read site
wget -c $(grep IFRAME ~/Downloads/VbrXHEYd.html | awk '/<IFRAME/ {print $4}' | awk -F'"' '{print $2}')
ファイルをsomename.shとして保存します。
次に、ファイルに実行可能権限を付与します。
chmod a+x /path/to/somename.sh
次に、ファイルを次のように実行します。
sh /path/to/somename.sh
これがスクリーンショットです:
html2
をsed
とともに使用することもできます。
$ curl -s http://Pastebin.com/raw/VbrXHEYd | html2 | sed '/iframe\/@src=/!d;s/^.*src=//'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html