TEXT-PROCESSING38 cmd
テキスト処理 (awk / sed / grep) チート集
grep、sed、awk の基本から正規表現、置換、フィールド処理、集計、ログ解析、CSV 抽出、Apache log の Top IP 集計まで、シェル作業で頻出する実例を集めたチート集。
- 更新日
- 2026-05-14
- 参照範囲
- 公式ドキュメント / man page / 主要ベンダーCLI
- 対象実装
- 主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
- 免責
- OS とバージョン差分は実環境で確認してください。
38 / 38
| Command | Description | Example | Copy |
|---|---|---|---|
grep PATTERN file | awk / sed / grep で grep PATTERN file を実務運用で使う | $ grep "ERROR" /var/log/app.log | |
grep -E | awk / sed / grep で grep -E を実務運用で使う | $ grep -E "error|warn" app.log | |
grep -v | awk / sed / grep で grep -v を実務運用で使う | $ grep -v "healthcheck" access.log | |
grep -n | awk / sed / grep で grep -n を実務運用で使う | $ grep -n "timeout" app.log | |
grep -i | awk / sed / grep で grep -i を実務運用で使う | $ grep -i "fatal" app.log | |
grep -A -B -C | awk / sed / grep で grep -A -B -C を実務運用で使う | $ grep -C 3 "panic" app.log | |
grep -r | awk / sed / grep で grep -r を実務運用で使う | $ grep -rn "listen" /etc/nginx | |
grep --include | awk / sed / grep で grep --include を実務運用で使う | $ grep -r --include="*.conf" "server_name" /etc/nginx | |
grep -o | awk / sed / grep で grep -o を実務運用で使う | $ grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log | |
grep -c | awk / sed / grep で grep -c を実務運用で使う | $ grep -c " 500 " access.log | |
sed s/x/y/g | awk / sed / grep で sed s/x/y/g を実務運用で使う | $ sed "s/old/new/g" file.txt | |
sed -i | awk / sed / grep で sed -i を実務運用で使う | $ sed -i.bak "s/DEBUG/INFO/g" app.conf | |
sed -n p | awk / sed / grep で sed -n p を実務運用で使う | $ sed -n "10,20p" app.log | |
sed address delete | awk / sed / grep で sed address delete を実務運用で使う | $ sed "/healthcheck/d" access.log | |
sed line range | awk / sed / grep で sed line range を実務運用で使う | $ sed "1,5s/foo/bar/g" file.txt | |
sed append | awk / sed / grep で sed append を実務運用で使う | $ sed "/server {/a\ add_header X-Test yes;" nginx.conf | |
sed multiline N | awk / sed / grep で sed multiline N を実務運用で使う | $ sed -n "N;/foo\nbar/p" file.txt | |
sed print matching | awk / sed / grep で sed print matching を実務運用で使う | $ sed -n "/ERROR/p" app.log | |
sed extract group | awk / sed / grep で sed extract group を実務運用で使う | $ sed -n "s/^user=\([^ ]*\).*/\1/p" app.log | |
sed newline literal | awk / sed / grep で sed newline literal を実務運用で使う | $ sed "s/,/\n/g" values.csv | |
awk print field | awk / sed / grep で awk print field を実務運用で使う | $ awk "{print $1, $NF}" access.log | |
awk BEGIN FS | awk / sed / grep で awk BEGIN FS を実務運用で使う | $ awk "BEGIN{FS=":"}{print $1}" /etc/passwd | |
awk -F | awk / sed / grep で awk -F を実務運用で使う | $ awk -F, "{print $1,$3}" users.csv | |
awk printf | awk / sed / grep で awk printf を実務運用で使う | $ awk "{printf "%-20s %s\n", $1, $2}" file.txt | |
awk sum | awk / sed / grep で awk sum を実務運用で使う | $ awk "{sum += $5} END{print sum}" access.log | |
awk associative array | awk / sed / grep で awk associative array を実務運用で使う | $ awk "{count[$1]++} END{for (ip in count) print count[ip], ip}" access.log | |
awk length | awk / sed / grep で awk length を実務運用で使う | $ awk "length($0) > 120" app.log | |
awk select numeric | awk / sed / grep で awk select numeric を実務運用で使う | $ awk "$9 >= 500 {print}" access.log | |
awk substr | awk / sed / grep で awk substr を実務運用で使う | $ awk "{print substr($0,1,80)}" app.log | |
awk ENVIRON | awk / sed / grep で awk ENVIRON を実務運用で使う | $ awk "BEGIN{print ENVIRON["HOME"]}" | |
grep awk top IP | awk / sed / grep で grep awk top IP を実務運用で使う | $ grep " 500 " access.log | awk "{print $1}" | sort | uniq -c | sort -nr | head | |
CSV column extract | awk / sed / grep で CSV column extract を実務運用で使う | $ awk -F, "NR>1 {print $2}" users.csv | |
Apache top 10 IP | awk / sed / grep で Apache top 10 IP を実務運用で使う | $ awk "{print $1}" access.log | sort | uniq -c | sort -nr | head -10 | |
Specific IP count | awk / sed / grep で Specific IP count を実務運用で使う | $ grep "192.0.2.10" access.log | wc -l | |
Replace config safely | awk / sed / grep で Replace config safely を実務運用で使う | $ sed -i.bak "s/^worker_processes.*/worker_processes auto;/" /etc/nginx/nginx.conf | |
Extract status code | awk / sed / grep で Extract status code を実務運用で使う | $ awk "{print $9}" access.log | sort | uniq -c | sort -nr | |
Filter time range | awk / sed / grep で Filter time range を実務運用で使う | $ awk "$4 >= "[14/May/2026:10" && $4 < "[14/May/2026:11"" access.log | |
Find unique errors | awk / sed / grep で Find unique errors を実務運用で使う | $ grep -E "ERROR|FATAL" app.log | sed "s/[0-9-]{10}.*/.../" | sort -u |