🔥

grep?知らんがな!から始める初心者Unixコマンド入門

に公開

🎯 はじめに

この教材は、Unixコマンド、シェルスクリプトを触ったことがないエンジニアでも「使える」ようになるための最初の一歩として作りました。
自分自身も超初心者でAIのサポートを受けながら試行錯誤で組み上げたもので、特別にうまく書かれているわけではありません。
けれど「こういうことをしたいとき、これが使える」がわかるレベルのスクリプトに仕上げたつもりです。

自分と同じように「シェルスクリプト苦手だな」「どこから手を付けていいかわからない」という人が、この教材でコマンドの動きを体感しながら学べるように作っています。

資源のリンク:
https://github.com/sabidaijin/lesson_shell/tree/main


🧩 この教材でできること

スクリプトには、以下が収録されています。

内容 学べるポイント
grep テキスト検索 ログから必要な行を抜き出す方法
awk テキスト整形 列ごとに情報を加工する方法
cut カラム抽出 区切り文字でデータを分ける方法
sed 文字列置換/編集 テキストを自動で書き換える方法
jq JSON解析 構造化データを整形・抽出する方法
sort 並べ替え アルファベット順/数値順ソート
uniq 重複除去 重複行の削除・カウント
wc 件数集計 行数・単語数・文字数を数える方法
regex 正規表現 パターンマッチの基本構文
redirect リダイレクト 標準出力・エラー出力の制御方法

⚙️ 使い方

スクリプト名:lesson.sh

# 各章だけ実行する場合
./lesson.sh grep

# 全章まとめて実行する場合
./lesson.sh all

実行すると、必要なサンプルファイル(sample.log / sample.json)が自動生成され、
各章のコマンド例を実際に動かしながら結果を確認できます。


📘 各章の概要

🔍 grep(検索コマンド)

  • 役割:ログやテキストから特定のキーワードを検索
  • grep 'ERROR' sample.log          # "ERROR" を含む行を抽出
    grep -n 'INFO' sample.log        # 行番号付きで検索
    grep -v 'INFO' sample.log        # INFOを含まない行だけ表示
    grep -i 'user' sample.log        # 大文字小文字を無視して検索
    

🧮 awk(テキスト整形)

  • 役割:行を分割し、特定カラムだけを抽出・加工
  • awk '{print $3, $4, $5}' sample.log
    awk '/ERROR/ {print $1, $2, $5, $6}' sample.log
    
  • ポイント$1 は1列目、$2 は2列目。条件と出力を同時に記述可能。

✂️ cut(カラム抽出)

  • 役割:指定した区切り文字で列を切り出す
  • cut -d' ' -f1-3 sample.log
    
    → スペース区切りで1〜3列目を表示。

🧹 sed(文字列編集)

  • 役割:置換・削除・抽出を行うテキストストリームエディタ
  • sed 's/INFO/INFORMATION/g' sample.log  # 文字列置換
    sed '3d' sample.log                    # 3行目を削除
    sed -n '2,4p' sample.log               # 2〜4行目だけ表示
    

🪣 jq(JSON解析)

  • 役割:JSONデータをCLIで抽出・整形
  • jq '.users[] | .name' sample.json
    jq '.users[] | select(.role=="admin")' sample.json
    

🔢 sort / uniq / wc(整形・集計系)

sort(並べ替え)

grep 'INFO' sample.log | awk '{print $5}' | sort

→ 行をアルファベット順にソート。
-rで逆順、-nで数値順。

uniq(重複削除)

grep 'INFO' sample.log | awk '{print $5}' | sort | uniq -c

→ 重複行をまとめて出現回数を表示。

wc(件数集計)

wc -l sample.log  # 行数
wc -w sample.log  # 単語数
wc -c sample.log  # 文字数

🔤 regex(正規表現)

  • 役割:パターンマッチによる高度な検索
  • 主な構文
    ^  行頭  |  $  行末  |  . 任意1文字  |  * 0回以上
    [0-9] 数字 | [^0-9] 数字以外 | () グループ化 | | OR条件
    
  • grep -E 'ERROR|WARNING' sample.log
    grep -E '[0-9]+' sample.log
    

🔁 redirect(入出力リダイレクト)

  • 役割:標準出力・標準エラー出力をファイルへ書き出し
  • 主な構文
構文 説明
> 標準出力をファイルへ上書き保存
>> 出力を追記
2> 標準エラー出力のみ保存
&> 標準出力+エラーをまとめて保存
2>&1 エラーを標準出力へ結合
< 入力ファイルを指定
  • grep 'ERROR' sample.log > error.log
    ls nofile 2> error.txt
    ls nofile existing_file &> both.txt
    wc -l < sample.log
    

🚀 学び方のステップ

  1. 実際に動かす。
    コマンドの結果を見て「何が起きているか」を理解する。
  2. 少しずつ改造する。
    grep のキーワードを変える、awk の列番号を変えるなど、1行ずつ試す。
  3. 出力を観察する。
    コマンドは「入力 → 処理 → 出力」の流れ。
    どこが変わるかを見て理解する。
  4. パイプでつなぐ。
    |(パイプ)を使って、コマンドを組み合わせる練習をする。

おわりに

シェルスクリプトについて情報をまとめる意味で作成しました。
他にも覚えるべきコマンドがあると思います。先輩エンジニアのご意見を心の底からお待ちしております。

Discussion