文字列検索のコマンド早見表
授業用の「蜘蛛の糸」の本文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回の宿題ではブラウザー検索も可 |