Linuxゲリラ戦記

imgタグが使われている行を抜き出す

左を向いているペンギンみたいなキャラクター、ナックス

49.imgタグが使われている行を抜き出す

ナックス「こんにちは。画像収集するシェルスクリプトを作ってみたい。今回は第14回」

ナックス「今回は48.imgタグの説明で説明したようにimgタグが使われている行を抜き出します」

デビー君「どうやって?」

ナックス「パイプとgrepを使います」

デビー君「パイプとgrep?」

ナックス「パイプとgrepを使えば、指定した文字を含む行だけ抜き出すことができます」

ナックス「忘れてる人は14.パイプとgrep、less。をチェックしてね」

ナックス「grepコマンド(対象のデータから特定の文字が含まれる行を抜き出す)でも説明してるよ」

ナックス「で!今回は <img が使われている行を抜き出したいのよ?」

デビー君「うん」

ナックス「でも < っていう文字がコマンド上で特殊な意味を持つ文字なのよ」

デビー君「特殊な意味を持つ文字?」

ナックス「例えば30.シェルスクリプトでプログラミングする前の予習。echoコマンド。exprコマンド。\によるエスケープ処理。で掛け算の*は特殊な意味を持つアレだから、素直に使えないねって話をしたのを覚えてますか?」

デビー君「そんな話をした気がする」

ナックス「そんな感じのアレなのさ」

デビー君「そんな感じのアレなんだ」

ナックス「だから『何とかかんとか | grep <img』みたいなコマンドを打つのではなくて」

何とかかんとか | grep <img

ナックス「『何とかかんとか | grep "<img"』みたいにコマンドを打つ必要がある」

何とかかんとか | grep "<img"

デビー君「ほう?」

ナックス「多分、話についてきてないと思うけど」

ナックス「今回やりたいことは47.ダウンロードしたファイルの中身を端末(コンソール)に表示するで作成したシェルスクリプトの2行目の末尾に『 | grep "<img"』というコードを付け足したい、というだけの話です」

ナックス「というわけでCUI環境を立ち上げて『cd imagework』とコマンドを打ってimageworkディレクトリに移動して」

$ cd imagework/

ナックス「『nano imageget.sh』とコマンドを打ってimageget.shファイルをnanoで開いて」

$ nano imageget.sh

ナックス「2行目の末尾に『 | grep "<img"』』って追記してくれる?」

#!/bin/sh
wget -O - "https://linuxgerira.com/imagesearch.php?q=%E5%85%AC%E5%BC%8F%E5%A3%81%E7%B4%99&page=1" | grep "<img"

nanoを起動して2行目の末尾にコマンドを追記する

ナックス「書けたらCtrlキーを押しながらOキーを押してEnterキーを押して保存した後に、Ctrlキーを押しながらXキーを押してnanoを終了してください」

ナックス「最後に『./imageget.sh』とコマンドを打って、シェルスクリプトを実行してください」

$ ./imageget.sh

コマンドを実行する

コマンドの実行結果

デビー君「imgタグが使われている行だけ表示されてる……気がする」

ナックス「気がするんじゃなくて、本当にimgタグが使われている行だけ抜き出して表示されてるんです。信じて」

ナックス「今回の実行結果は、47.ダウンロードしたファイルの中身を端末(コンソール)に表示するで実行して端末に表示されたhtmlコードから、imgタグが使われている行だけ抜き出して表示されたものになります」

ナックス「次回、50.imgタグの前半を削除する