Linux 中級まとめ — テキスト処理とシェルスクリプト
この記事は、基礎コマンドからシェルスクリプトまでLinuxの実践的なスキルを1からマスターする「Linux入門講座の一部」です。
grep正規表現・sed・awk・sort uniq cut wc tr tee・tar ln diff・du df dateと、変数・引数・条件・ループ・関数・入力・連携・出力のシェル構文を、分類図と分野別の早見表で1ページに横断整理します。
Linux 中級で学んだことの全体像
このページはブラウザで実行する演習ではなく、中級(テキスト処理 I1〜I10 とシェルスクリプト S1〜S10)の総整理が目的です。検索と置換・列の集計・整形・アーカイブ・差分・システム情報といったテキスト処理と、変数から関数・入力読込・コマンド連携・レポート出力までのシェルスクリプトを、図と分野別の早見表で 1 ページに横断整理します。早見表から各記事へ戻り、いつでも復習に使えます。
テキスト処理の早見 — 正規表現 / sed / awk
文字列の検索・置換・抽出・集計を担う中核グループです。grepの正規表現で行を絞り、sedで置換や行操作を行い、awkで列を取り出して集計します。記号の意味を押さえると、ログやCSVの加工が一気に楽になります。
| 書き方 | 意味 |
|---|---|
^ / $ | 行頭・行末に一致する |
. / * | 任意の1文字・直前の0回以上の繰り返し |
[abc] / [a-z] | 文字クラス(いずれか1文字・範囲) |
grep -E | 拡張正規表現(+ | ()が使える) |
grep -o | 一致した部分だけを取り出す |
| 書き方 | 意味 |
|---|---|
sed 's/old/new/' | 各行の最初のoldをnewに置換 |
sed 's/old/new/g' | 行内すべてのoldを置換 |
sed -n 'Np' | N 行目だけを抽出する |
sed '/pat/d' | patを含む行を削除する |
sed -i | ファイルを直接書き換える |
| 書き方 | 意味 |
|---|---|
awk '{print $1}' | 1 列目を取り出す($NFは最終列) |
awk -F',' | 区切り文字を変える |
NR / NF | 行番号・その行の列数 |
/pat/{ … } | 一致行だけに処理を適用する |
BEGIN{} … END{} | 処理前・処理後の初期化と集計 |
整形ツールとファイル系の早見
並べ替え・重複除去・列抽出・行数・文字変換・分岐を担う整形ツールと、アーカイブ・リンク・差分・システム情報のファイル系コマンドです。パイプでつないで集計やレポートの前処理に使います。
| 書き方 | 意味 |
|---|---|
sort / sort -n | 並べ替える(-nは数値順) |
uniq / uniq -c | 連続重複を除く(-cは件数付き) |
cut -d',' -f1 | 区切りを指定して列を抽出する |
wc -l / wc -w | 行数・単語数を数える |
tr a-z A-Z / tr -d / tr -s | 文字変換・削除・連続圧縮 |
tee file | 出力を画面とファイルへ分岐する |
| 書き方 | 意味 |
|---|---|
tar -cf a.tar dir | ディレクトリを 1 つにまとめる(非圧縮) |
tar -tf a.tar | アーカイブの中身を一覧する |
tar -xf a.tar / -C dir | 展開する(-Cで展開先を指定) |
ln -s target name | シンボリックリンクを作る(ls -lの->) |
ln a b | ハードリンクを作る |
diff a b / diff -u | 差分を表示する(-uは統一形式) |
du -sh / df -h | 使用量・空き容量を見やすく表示する |
date +%Y-%m-%d / uname -a | 日時の整形・カーネル情報を表示する |
シェルスクリプト構文の早見
変数・引数・条件・ループ・関数・入力読込・コマンド連携・出力までの構文です。#!/bin/shで始め、chmod +xで実行権を付け、./fileで実行します。本講座のコンソールはashのため、[ ]とifを使います([[ ]]はbash拡張です)。
| 書き方 | 意味 |
|---|---|
#!/bin/sh / chmod +x f / ./f | shebang・実行権付与・実行 |
v=x / "$v" | 変数の代入と参照(クォートで安全に) |
$1 / $@ / $# | 第1引数・全引数・引数の個数 |
${1:-def} | 引数が無いときの既定値 |
$(...) / $(( )) | コマンド置換・算術展開 |
[ -f f ] / if … fi / case | ファイル判定・条件分岐 |
for … do … done / while | 繰り返し処理 |
name() { … } / local | 関数定義とローカル変数 |
while read line; do … done < f | ファイルを1行ずつ読む |
printf '%s\t%s\n' a b | 書式付き出力(タブ・改行を明示) |
> f / >> f / 2> err | 上書き・追記・標準エラーの分離 |
<<EOF … EOF / $? | here-doc・直前の終了コード |
中級、お疲れ様でした!
ここまでで、正規表現での検索、sed / awkによる置換と集計、sort / uniq / cut / wc / tr / teeでの整形、tar / ln / diff / システム情報のファイル操作、そして変数・引数・条件・ループ・関数・入力読込・コマンド連携・レポート出力までのシェルスクリプトがそろいました。これらを組み合わせれば、ログ集計や定型作業の自動化といった実務の処理をひと通り書けます。
この早見表は手元に置いて、書き方を忘れたら各記事へ戻り、実際に手を動かして確かめてください。次は学んだ要素を組み合わせ、自分の作業に合わせた小さな自動化スクリプトから書き始めてみましょう。