這些工具適合做快速盤點與一次性清理;資料格式只要有引號、換行欄位或複雜 CSV,就不該假設單一分隔符能安解析。
動手前:先把結果輸出到新檔並 diff,確認後才替換正式檔。sed -i 在 GNU 與 macOS BSD 的語法不同,也會直接改檔。
查看與切欄位
看前 20 行Linux/macOS
head -n 20 app.log只讀取開頭。
看最後 100 行Linux/macOS
tail -n 100 app.log常用於快速看最新 log。
持續追蹤新增內容Linux/macOS
tail -F app.log-F 會嘗試跟隨 log rotation;結束按 Ctrl+C。
計算行數Linux/macOS
wc -l access.log輸出包含行數與檔名。
取冒號分隔第 1 欄Linux/macOS
cut -d ':' -f 1 /etc/passwd只適合分隔規則單純的文字。
取固定字元範圍Linux/macOS
cut -c 1-12 report.txt依字元位置切,不理解欄位語意。
把大寫轉小寫Linux/macOS
tr '[:upper:]' '[:lower:]' < names.txt輸出到畫面;要保存請導到新檔。
刪除 Windows CR 字元Linux/macOS
tr -d '\r' < windows.txt > unix.txt不會修改來源,完成後再比對。
sort 與 uniq
依文字排序Linux/macOS
sort names.txt預設排序受 locale 影響。
依數字排序Linux/macOS
sort -n values.txt把欄位當數字,不是字串。
依第 2 欄數字反向排序Linux/macOS
sort -k2,2nr report.txt假設欄位以空白分隔。
排序並去除重複行Linux/macOS
sort -u names.txt原順序不會保留。
統計每個值出現次數Linux/macOS
sort status.txt | uniq -c | sort -nruniq 只合併相鄰重複,所以前面要先 sort。
只顯示重複值Linux/macOS
sort names.txt | uniq -d會列出至少出現兩次的行。
sed 與 awk
sed 預覽文字替換Linux/macOS
sed 's/old.example/new.example/g' app.conf不加 -i 時只輸出結果,不改原檔。
只印指定行範圍Linux/macOS
sed -n '20,40p' app.log讀取第 20 到 40 行。
刪除空白行後輸出Linux/macOS
sed '/^[[:space:]]*$/d' input.txt > cleaned.txt先輸出新檔,再 diff。
GNU sed 先備份再原地改GNU/Linux
sed -i.bak 's/old/new/g' app.conf會留下 app.conf.bak;完成後檢查差異。
macOS sed 先備份再原地改macOS
sed -i '.bak' 's/old/new/g' app.confBSD sed 的 -i 後需要備份副檔名參數。
awk 印第 1 與第 3 欄Linux/macOS
awk '{print $1, $3}' report.txt預設以連續空白分欄。
awk 指定逗號分隔Linux/macOS
awk -F ',' '{print $1, $4}' simple.csv不適用含引號逗號或多行欄位的正式 CSV。
awk 加總第 2 欄Linux/macOS
awk '{sum += $2} END {print sum}' values.txt先確認空值與非數字如何處理。
awk 篩出 HTTP 5xxLinux/macOS
awk '$9 ~ /^5[0-9][0-9]$/ {print}' access.log假設狀態碼位於第 9 欄,先核對 log_format。
awk 統計第 9 欄Linux/macOS
awk '{count[$9]++} END {for (s in count) print s, count[s]}' access.log | sort欄位位置依實際 access log 格式而定。
怎麼確認有做對
- 結果先導到新檔,使用 diff -u 比較。
- 用 head、tail 與抽樣原始資料確認欄位位置。
- 統計結果加總後應和原始行數或已知控制總數對得上。
常見錯誤
- 把一般 CSV 當成永遠沒有引號與換行。
- sed -i 沒留備份就直接改正式設定。
- 忘記 uniq 只處理相鄰重複。
- 欄位位置和 log_format 不一致,卻仍相信統計結果。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。