如何在 Linux 命令行中顯示某個文件中指定的幾行文字
工作中會有很多千奇百怪的需求,比如:如何在 Linux 命令行中快速找到某個文件的第 n 行?如何顯示從第 x 行到第 y 行之間的內容?
事實上,這個任務會有不止一種方法來實現。
比如,假如要顯示第 13 行內容,可以使用 head 命令組合 tail 命令,如下:
或者,使用?? sed 命令??:
再比如,顯示第 20 行到第 25 行之間的內容,同樣使用 head 命令組合 tail 命令,如下:
或者使用 ??sed 命令??:
下面我們詳細看看。
使用 head 命令和 tail 命令組合來顯示文件的特定行
這個方法是我認為最簡單的方法,且經常使用。
打印某一行內容
head 命令和 tail 命令都用于在終端中顯示文件的內容。
使用如下語法顯示文件中指定的第 x 行:
上述代碼中的 x 即為行號,比如上文中提到的例子中要顯示第 13 行:
關于 head 和 tail 命令,即使對其不熟悉,根據名字也能猜出來,head 命令從文件的開頭獲取文件內容,而 tail 命令從文件的末尾開始獲取內容。
head -x 命令部分,是獲取文件的前 x 行,然后將這個結果重定向到 tail 命令,而 tail 命令將顯示從第 x 行開始的內容。
所以,上述命令的邏輯就是首先獲取文件的開頭 13 行內容,然后在從其第 13 行開始到最后的所有內容,很顯然獲取的就只有第 13 行這一行。
獲取指定范圍的行
現在我們使用 head 和 tail 組合命令來顯示某一范圍的內容。
要顯示文件的第 x 行到第 y 行(同時會包含第 x 行和第 y 行),可以使用如下語法命令:
比如,假如我們要打印文件中第 20 行到第 25 行中的內容,如下代碼:
使用 sed 命令顯示文件中的特定行
使用 sed 命令,可以有多種打印特定行內容的方法。
比如,要顯示文件的第 10 行,可以使用如下方式:
如果要打印從第 x 行到第 y 行,可使用如下方法:
使用 awk 命令打印文件中的指定行
awk 命令可能看起來比較復雜,使用它需要有一個學習的過程。但與 sed 一樣,awk 在編輯和操作文件內容方面功能很強大。
使用 awk 查看文件的第 n 行,可參考如下代碼:
上述代碼會顯示文件的第 5 行,NR 表示“當前記錄編號”。
打印從 x 行到第 y 行,可使用如下方式:
其語法與大多數編程語言的語法類似。