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