nl (Number Lines) 專為**給檔案內容加行號**設計,功能比 cat -n 更豐富:支援邏輯頁 (header/body/footer) 分別編號、空行略過、行號靠左/靠右/補零、位數自訂。本文完整解析參數、邏輯頁機制與實戰範例。
nl [選項...] [檔案...]
| 參數 | 說明 |
|---|---|
-b STYLE | 主體編號方式:a=全部行(含空行)、t=非空行(預設)、n=不編號、pREGEXP=符合正則行編號 |
-h STYLE | 標題區編號方式 (同 -b) |
-f STYLE | 頁腳區編號方式 (同 -b) |
-n FORMAT | 行號格式:ln=靠左、rn=靠右不補零、rz=靠右補零 (預設) |
-w NUMBER | 行號欄寬 (預設 6),配合 -n rz 補零 |
-s STRING | 行號與內容分隔字串 (預設 Tab) |
-p | 跨邏輯頁不重設行號 (預設每頁重設) |
-d STRING | 邏輯頁分隔字串 (預設 \: ) |
輸入視為含 **Header、Body、Footer** 三區的邏輯頁,分隔字串預設 \: (單獨一行)。
預設:-h t -b t -f n (標題/主體編號非空行、頁腳不編號)。
搭配 -p 可跨頁連續編號。
2014-01
2014-02
2014-03
2014-04
2014-05
2014-06
2014-07
2014-08
2014-09
2014-10
2014-11
2014-12
=======
nl log2012.log
# 輸出:
# 1 2012-01
# 2 2012-02
# 3 =======
nl -b a log2012.log
# 輸出:
# 1 2012-01
# 2 2012-02
# 3
# 4
# 5 =======
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 -s ": " log2014.log
# 輸出:
# 1: 2014-01
# 2: 2014-02
# 檔案含分隔行 \:
cat > test.nl <<'EOF'
Header line 1
Header line 2
\:
Body line 1
Body line 2
\:
Footer line 1
EOF
nl -h a -b a -f a test.nl
# 輸出:
# 1 Header line 1
# 2 Header line 2
# 3 Body line 1
# 4 Body line 2
# 5 Footer line 1
# (每區獨立從 1 開始)
nl -p -h a -b a -f a test.nl
# 輸出 (跨頁連續):
# 1 Header line 1
# 2 Header line 2
# 3 Body line 1
# 4 Body line 2
# 5 Footer line 1
| 功能 | nl | cat -n |
|---|---|---|
| 空行編號控制 | 靈活 (-b a/t/n/p) | 固定編號所有行 |
| 行號格式 | 靠左/右、補零、位數 | 固定靠右 6 位補空白 |
| 分隔符 | 可自訂 (-s) | 固定 Tab |
| 邏輯頁分區編號 | 支援 | 不支援 |
nl -b a -n rz -w 4 -s " " src.cnl -b a /var/log/syslog | tail -20nl -p -b a report.txt
Linux 關機與重啟指令全解析:shutdown、halt、reboot、systemctl、init 正確姿勢
Linux 軟 RAID 5 部署實戰:從磁盤分區到陣列掛載的標準化流程
Linux 與 Windows 檔案權限機制深度比較:為何 Linux 更安全?
Linux 核心升級後使用 Shell Script 自動化編譯安裝無線網卡驅動
Linux 指令學習四大秘笈:每日提示、whatis、man/help、語法速成
grep 文字搜尋神器:正規表示式、參數全表、前後文脈、計數/行號/檔名輸出、遞迴/二進位處理、腳本回傳碼應用
Linux Cgroups (Control Groups) 安裝、配置與資源限制實戰指南
Linux Vim 安裝 YouCompleteMe 程式碼補全外掛:Vundle 管理、Python 支援編譯、Clangd 語義補全完整流程