LinuxDrill › テキスト処理演習 › 解説
Linuxテキスト処理コマンド解説
公開日: 2026年6月28日
Linux のテキスト処理コマンドは、ログ解析やデータ加工の現場で日常的に使われます。個々のコマンドを覚えるだけでなく、パイプで繋いで組み合わせることで真価を発揮します。
1. head / tail — ファイルの先頭・末尾を表示
head は先頭、tail は末尾の行を表示します。デフォルトは10行です。
# 先頭5行を表示 head -n 5 /var/log/messages # 末尾20行を表示 tail -n 20 /var/log/messages # ファイルの追記をリアルタイムで監視(Ctrl+C で終了) tail -f /var/log/messages
2. grep — 文字列の検索
ファイルや標準入力から特定のパターンを含む行を抽出します。
# error を含む行を検索
grep "error" /var/log/messages
# 大文字小文字を区別しない
grep -i "error" /var/log/messages
# 一致しない行を表示(反転)
grep -v "DEBUG" app.log
# 行番号も表示
grep -n "timeout" app.log
# 正規表現でIPアドレスを検索
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" access.log
3. sort — 行を並べ替える
テキストをアルファベット順・数値順で並べ替えます。
# アルファベット順(昇順) sort names.txt # 逆順(降順) sort -r names.txt # 数値として並べ替え(101 が 2 より大きいと正しく扱う) sort -n numbers.txt # 2列目(フィールド)を基準に並べ替え sort -k2 data.txt # 重複を除いて並べ替え sort -u names.txt
4. uniq — 重複行の処理
連続する重複行を削除または集計します。sort と組み合わせるのが定番です。
# 重複行を削除(連続している場合のみ) uniq names.txt # 出現回数を表示 uniq -c names.txt # sort でソートしてから重複削除(非連続の重複も消える) sort names.txt | uniq
5. wc — 行数・単語数・文字数のカウント
# 行数・単語数・バイト数を表示 wc /etc/passwd # 行数だけ表示 wc -l /etc/passwd # 文字数(バイト数)だけ表示 wc -c file.txt
6. パイプ(|)— コマンドを連鎖させる
パイプは前のコマンドの標準出力を次のコマンドの標準入力に渡します。これによってコマンドを自由に組み合わせられます。
# エラーログの行数を数える grep "ERROR" app.log | wc -l # ログからIPアドレスを抽出して重複排除しソート grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log | sort | uniq # /etc/passwd からユーザー名だけ取り出してソート cut -d: -f1 /etc/passwd | sort # プロセス一覧から特定プロセスを探す ps aux | grep nginx | grep -v grep # 最もディスクを使っているディレクトリTop5 du -sh /* 2>/dev/null | sort -rh | head -5
7. cut — 列を切り出す
区切り文字で分割された列を取り出します。
# コロン区切りで1列目を取得(/etc/passwd のユーザー名) cut -d: -f1 /etc/passwd # 3列目と5列目を取得 cut -d: -f3,5 /etc/passwd # 文字位置で切り出し(1〜10文字目) cut -c1-10 file.txt
8. 実践例:ログ解析
コマンドを組み合わせた実践的なログ解析の例です。
# 直近100行のエラーをタイムスタンプ付きで表示 tail -n 100 /var/log/messages | grep -i "error" # アクセスログからHTTPステータス500の件数を数える grep " 500 " access.log | wc -l # アクセスの多いIPアドレスTop10 cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head -10