nl (number lines) 將檔案內容輸出並加上行號,功能類似 cat -n 但提供更豐富的行號格式控制:位數、補零、靠左/靠右對齊、空行處理邏輯。本文完整整理參數、功能與實戰範例。

nl [選項]... [檔案]...
| 參數 | 說明 |
|---|---|
| -b a | 所有行編號 (含空行),等同 cat -n |
| -b t | 非空行編號 (預設) |
| -n ln | 行號靠左顯示 |
| -n rn | 行號靠右顯示,不補零 |
| -n rz | 行號靠右顯示,補零 |
| -w N | 行號欄寬 (預設 6 位) |
| -p | 邏輯分頁符不重置行號 |
| -s STRING | 行號與內容分隔字串 (預設 Tab) |
log2014.log 內容:2014-01
2014-02
2014-03
...
2014-12
=======
nl log2014.log
# 輸出:
# 1 2014-01
# 2 2014-02
# ...
# 12 2014-12
# 13 =======
nl -b a log2014.log
nl -b a -n rz log2014.log
# 輸出:
# 000001 2014-01
# 000002 2014-02
# ...
# 000013 =======
nl -b a -n rz -w 3 log2014.log
# 輸出:
# 001 2014-01
# 002 2014-02
# ...
# 013 =======
nl -n ln log2014.log
# 列出 /etc/passwd 前 5 行並編號
head -5 /etc/passwd | nl -b a -n rz -w 3
# 過濾特定關鍵字並編號
grep "error" /var/log/messages | nl -b a
| 工具 | 特色 | 適用場景 |
|---|---|---|
| nl | 格式豐富、支援邏輯分頁 | 報表產生、程式碼列印 |
| cat -n | 簡單、內建 | 快速檢視 |
| awk '{print NR,$0}' | 可程式化、支援條件 | 複雜過濾/轉換 |
nl 雖非高頻指令,但在需要「美觀行號」的報表、程式碼審查、日誌分析輸出時極為實用。記住 -b a (全行編號)、-n rz (補零)、-w (欄寬) 三大核心參數即可應對 90% 場景。