零、需求
有一個文件很大,但是我們只需要查看文件開頭的一部分。如果使用cat命令會查看整個文件就會我們想要的部分會被淹沒掉。這個時候使用head命令是明智的選擇。還有排序完以后,需要取前幾名的時候,使用head事半功倍。
一、介紹
head命令可以輸出文件前半部分。默認會打印文件前10行。如何head后面跟多個文件名,則每個文件都打印10行(如果文件不足10行,到文件結束為止)。如果沒有指定文件名或者文件名為-,那么head將會從標準輸入(鍵盤輸入)讀取,輸出到標準輸出(屏幕)。
使用場景:
a. 獲取文件前n行
b. 排序以后去前n名
二、使用
2.1 語法
head [OPTION]... [FILE]...
2.2 選項
-b K : K代表整數,打印文件前K個字節;如果K為負數,表示除了文件最后|K|(K的絕對值)個字節,其余全部打印。 -n K : K代表整數,打印文件前K行;如果K為負數,表示除了文件最后|K|(K的絕對值)行,其余全部打印。 -q: 不打印文件名(默認) -v : 總是打印文件名 --help: 輸出幫助信息 --version : 輸出版本信息 這是在逗我嗎,只給我看命令選項。別急,案例都在下面呢!
三、案例
3.0 數據準備
假如我們有一個timewentby.com的文件,內容如下:
3.1 默認查看timewentby.com文件
head timewentby.com
可以看到默認輸出為10行。
3.2 查看文件前12個字節
head -c 12 timewentby.com
注意:
a. 換行符也算一個字符
b. 如果取到指定字符沒有換行符,是不會換行的。例如本案例中的93就沒有換行。
3.3 查看文件前5行,并輸出文件名稱
選項
-n K : K代表整數,打印文件前K行;如果K為負數,表示除了文件最后|K|(K的絕對值)行,其余全部打印。 -v : 總是打印文件名
命令
head -v -n 5 timewentby.com
3.4 查看除了最后2行的其他行
選項
-n K : K代表整數,打印文件前K行;如果K為負數,表示除了文件最后|K|(K的絕對值)行,其余全部打印。
命令
head -n -2 timewentby.com
注意:這里使用 | cat -n 只是為了對比行號。實際應用不用添加。
3.5 查看除了最后14個字節的內容
選項
-b K : K代表整數,打印文件前K個字節;如果K為負數,表示除了文件最后|K|(K的絕對值)個字節,其余全部打印。
命令
head -c -14 timewentby.com
說明:
a. 最后14個字節= 最后一行全行(9個字節) + 倒數第二行的.com(4字節) + 倒數第二行換行符(1字節)
b. 所以最后一行顯示的是: Welcome to https://timewentby , 因為沒有換行符,所以和我們的命令行在一行內。
3.6 對文件中每行的數字行(包含數字的行)進行降序排序,并取前三名
方法1:
grep -P '^s*d+s*$' timewentby.com | sort -nr | head -n 3
下面貼出一張動態圖展示過程:
方法2:
grep '^[0-9]+$' timewentby.com | sort -nr | head -n 3
下面貼出一張動態圖展示過程:
注意:方法1和方法2都是使用正則,但是寫法不同。如果想要知道差別請參考:
linux: 用了怎麼久Grep命令,這些可能你還不知道?
方法3:
sed -n '/^[0-9]+$/p' timewentby.com | sort -gr | head -3
下面貼出一張動態圖展示過程:
還有以下其他的方法,因為篇幅有限,所以這里不做過多的敘述。感興趣的話可以自己試試。
四、總結
到這里我相信通過以上的案例你對head命令也會有一個更深刻的認識。是不是覺得so easy .本片文章就寫到這里了。如果你有什么疑問,歡迎留言。
如果你覺得這篇文章幫助到您了,麻煩您給點個贊,要是能關注就更好了!您的點贊和關注是對我最大的鼓勵,同時也激勵我創作出更好的作品。