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"
ナックス「書けたらCtrlキーを押しながらOキーを押してEnterキーを押して保存した後に、Ctrlキーを押しながらXキーを押してnanoを終了してください」
ナックス「最後に『./imageget.sh』とコマンドを打って、シェルスクリプトを実行してください」
$ ./imageget.sh
デビー君「imgタグが使われている行だけ表示されてる……気がする」
ナックス「気がするんじゃなくて、本当にimgタグが使われている行だけ抜き出して表示されてるんです。信じて」
ナックス「今回の実行結果は、47.ダウンロードしたファイルの中身を端末(コンソール)に表示するで実行して端末に表示されたhtmlコードから、imgタグが使われている行だけ抜き出して表示されたものになります」
ナックス「次回、50.imgタグの前半を削除する」