shell學習二十四天----提取開頭或結尾數行
提取開頭或結尾數行
有時,會需要從文字檔案裡把幾行字----多半是靠近開頭或結尾的幾行,提取出來;或者,有時只要瞧瞧工作日誌的後面幾行,就可以瞭解最近工作活動的大概情況.可以用下面的方式顯示標準錢n條記錄,或是命令列檔案列表中的每一個前n條記錄.
head -n n [file(s)]
head -n [file(s)]
awk ‘FNR<= n’ [file(s)]
sed -e nq [file(s)]
sed nq [file(s)]
個人覺得最好用的顯示文字檔案的頭幾行最好用的是 head -n [file(s)]
head的常用選項:
-q: 隱藏檔名
-v: 顯示檔名
-c<位元組
-n<行數>: 顯式的行數
在互動式shell通訊期中,有時需要監控某個檔案的輸出----如日誌這類持續寫入狀態的檔案.-f選項這時就派上用場了,他可以要求tail顯示指定的檔案結尾行數,接著進入無止境的迴圈中----休息一秒後又再度醒來並檢查是否需要顯示更多的輸出結果.再設定-f的狀態下,tail只有當你中斷它時才會停止----通常是輸入Ctrl+C來中斷;
tail -n 25 -f /var/log/messages 觀察此選項不可用於shell指令碼.
直到按了ctrl+c選項後才停止.
由於tail加上-f選項之後便不會自己中斷,所以此選項不能用於
head案例:
使用命令:head -n 3 /etc/passwd結果是顯示檔案的頭三行,
如果命令為:head -n -3 /etc/passwd 結果是顯示除了最後三行都顯示,注意到區別沒有?
相似的,顯示檔案的前n個位元組,以及除了最後n個位元組以外的內容也沒問題了.
head和tail如果組合使用:
head -n 5 /etc/passwd | tail -n 3
輸出/etc/passwd的第三道第五行.