Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 指定行號查看檔案內容:sed、awk、head/tail 實戰技巧全解析

編輯:關於 Linux

在 Linux 系統管理與腳本開發中,精確擷取檔案特定行範圍是高頻需求。本文介紹四種主流方法:sed、awk、head/tail 組合、以及 nl 搭配 grep,並對比效能與適用場景,助你根據檔案大小與任務複雜度選擇最佳工具。

方法一:sed 精確範圍列印(推薦中小型檔案)

# 語法:sed -n '起始行,結束行p' 檔案
sed -n '10,20p' logfile.txt        # 顯示第 10-20 行
sed -n '5,100p' logfile.txt        # 顯示第 5-100 行
sed -n '1,5p' logfile.txt          # 顯示前 5 行(等同 head -5)
sed -n '$p' logfile.txt            # 顯示最後一行(等同 tail -1)
sed -n '10,$p' logfile.txt         # 顯示第 10 行到檔案結尾
關鍵參數: -n 抑制預設輸出,p 列印匹配行。若省略 -n 會輸出整個檔案並重複列印目標行。

方法二:awk 靈活行號處理(適合條件篩選)

# 顯示第 10-20 行
awk 'NR>=10 && NR<=20' logfile.txt

# 顯示特定行(如第 5、10、15 行)
awk 'NR==5 || NR==10 || NR==15' logfile.txt

# 結合條件:第 10 行之後且包含 "error"
awk 'NR>10 && /error/' logfile.txt

# 顯示行號與內容
awk '{print NR ": " $0}' logfile.txt | sed -n '10,20p'

方法三:head/tail 組合(大檔案高效能)

# 顯示第 100-200 行:先取前 200 行,再取後 101 行
head -200 logfile.txt | tail -101

# 通用公式:顯示第 M 到 N 行 (M<=N)
# head -N | tail -$(N-M+1)
head -200 logfile.txt | tail -$((200-100+1))

# 顯示倒數第 50 到 20 行
tail -50 logfile.txt | head -31
效能優勢: head/tail 僅讀取必要區塊,對 GB 級大檔案極快;sed/awk 需掃描前置行數。

方法四:nl 加行號配合 grep(互動式查找)

# 先加行號再篩選
nl -ba logfile.txt | grep -E '^(1[0-9]|20)\s'

# 或使用 cat -n
cat -n logfile.txt | sed -n '10,20p'

進階應用場景

需求推薦指令範例
顯示第 N 行單行sed -n 'Np'sed -n '42p' file
顯示倒數 N 行tail -Ntail -20 file
排除前 N 行tail -n +$(N+1)tail -n +11 file (跳過前10行)
多個不連續區間sed -n -e '5,10p' -e '20,25p'sed -n -e '5,10p' -e '20,25p' file
配合正則表達式行首awk '/^ERROR/ && NR>100'第100行後以ERROR開頭的行

效能對比與選擇建議

  • 小檔案(<10MB): sed 語法最直觀,功能最豐富
  • 大檔案(>100MB): head/tail 組合或 awk 避免全檔掃描
  • 需複雜條件篩選: awk 程式化能力最強
  • 互動式探索: cat -n | less 或 nl | grep

熟練掌握這四種方法的組合運用,能讓日誌分析、設定檔審閱、資料擷取等工作事半功倍。建議根據實際檔案大小與任務需求靈活選擇。

Copyright © Windows教程網 All Rights Reserved