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