文字列検索のコマンド早見表

授業で使う教材・第2回の演習・第3回の演習

授業用の「蜘蛛の糸」の本文story.txtに使うコマンドです。ターミナルを開く手順。

作業場所と入力

コマンド 意味
pwd 作業中のフォルダーの場所を表示
ls フォルダーの中身を表示
mkdir -p dh-b-2026 必要に応じて作業フォルダーを作成
cd dh-b-2026 親フォルダーから作業フォルダーに移動。一度だけ実行

次のcurlコマンドは、作業中のフォルダーにあるstory.txtを上書きします。アノテーションは別ファイルに保存してください。

curl -fL -o story.txt https://soranoha.org/works/000092_000879/plaintext

-fはHTTPエラーで停止し、-Lは転送先に追従します。-oは保存名を指定します。

検索と数える単位

コマンド 出力
grep --color=auto -nF 'のぼ' story.txt 一致した行と行番号
grep -cF 'のぼ' story.txt 一致した行数
grep -oF 'のぼ' story.txt 出現箇所を1行ずつ表示

--color=autoはターミナルで一致部分を色で表示します。macOSとLinuxで使え、検索する範囲や件数は変わりません。

次のパイプは出現数を数えます。

grep -oF 'のぼ' story.txt | wc -l

-Fは文字列そのものを検索します。パイプ(|)は出力を次のコマンドに渡し、wc -lは受け取った行数を数えます。曲がった引用符(‘ ’)ではなく、半角引用符(')を使ってください。各段階の出力の図。

配布本文では一致した行が5行、出現数が12件で、あのぼんやりも含みます。数える単位の図。

検索結果をファイルに保存するには?

コマンドと出力をメモに貼り付けるか、>で出力を保存してください。

grep -nF '落ち' story.txt > down.txt

>は出力をdown.txtに保存し、同じ名前のファイルを置き換えます。コマンド自体もメモに残してください。

パターンで検索する

-Eを付けると、引数を正規表現のパターンとして読みます。-Fとは併用できません。

コマンド 出力
grep -onE 'のぼ.' story.txt のぼと続く1文字を、行番号付きで1件ずつ
grep -oE 'のぼ.' story.txt | sort | uniq -c 続く1文字ごとの件数
grep -oE 'のぼ[っりるれ]' story.txt | wc -l 角括弧内のいずれかが続く出現数
記号 意味
. 任意の1文字
[っりるれ] 角括弧の中のいずれか1文字

配布本文ではのぼ.が12件(のぼん1件を含む)、のぼ[っりるれ]が11件です。

失敗時の対応

状況 対応
ダウンロードできない 本文のコピーを作業フォルダーにstory.txtとして保存
No such file pwdとlsで場所とファイル名を確認
続きの入力を求められる Ctrl+Cで戻り、引用符の対を確認
一致がない 本文の表記と照合
.が1文字に一致せず、出力が文字化けする localeの出力にUTF-8があるか確認し、ターミナルの文字コードをUTF-8にする
Windowsでgrepが認識されない コマンドプロンプトやPowerShellを閉じ、WSLのUbuntuを開く
コマンドが使えない lingを使えるようにするの手順を行う。第2回の宿題ではブラウザー検索も可

授業ページを検索