介紹如何在 Linux 使用 head、tail、sed 或 awk 指令,擷取檔案中的特定幾行內容。
產生測試用檔案
使用以下 Bash 指令稿產生 100 行的測試檔案:
#!/bin/bash for i in {1..100}; do echo "Line $i" done > file.txt
產生的檔案內容會像這樣:
# 顯示檔案內容的前三行 head -n 3 file.txt
Line 1 Line 2 Line 3
印出特定行內容
在 Linux 命令列中,若要印出檔案中特定行的內容,有好幾種方式可以使用,最基本的就是將 head 與 tail 搭配使用,例如顯示檔案內容的第 25 行:
# 顯示檔案內容的第 25 行 head -25 file.txt | tail +25
Line 25
第二種方式是使用 sed 指令:
# 顯示檔案內容的第 25 行 sed -n '25p' file.txt
Line 25
第三種方式是使用 awk 指令:
# 顯示檔案內容的第 25 行 awk 'NR==25' file.txt
Line 25
亦可使用 perl 來處理:
# 顯示檔案內容的第 25 行 perl -ne 'print if $.==25' file.txt
Line 25
印出特定行範圍內容
若要顯示特定的行範圍,也可以用類似的方式處理。
將 head 與 tail 搭配使用,顯示檔案內容的第 20 行到第 25 行:
# 顯示檔案內容的第 23 行到第 25 行 head -25 file.txt | tail +23
Line 23 Line 24 Line 25
使用 sed 指令顯示檔案內容的第 23 行到第 25 行:
# 顯示檔案內容的第 23 行到第 25 行 sed -n '23,25p' file.txt
Line 23 Line 24 Line 25
使用 awk 指令顯示檔案內容的第 23 行到第 25 行:
# 顯示檔案內容的第 23 行到第 25 行 awk 'NR>=23 && NR <=25' file.txt
Line 23 Line 24 Line 25
使用 perl 顯示檔案內容的第 23 行到第 25 行:
# 顯示檔案內容的第 23 行到第 25 行 perl -ne 'print if $.>=23 and $.<=25' file.txt
Line 23 Line 24 Line 25
參考資料:Linux Handbook

