介紹如何在 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