1. 程式人生 > >shell學習二十四天----提取開頭或結尾數行

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選項之後便不會自己中斷,所以此選項不能用於

shell指令碼.使用-f選項有實時監聽的效果.

head案例:

使用命令:head -n 3 /etc/passwd結果是顯示檔案的頭三行,

如果命令為:head -n -3 /etc/passwd 結果是顯示除了最後三行都顯示,注意到區別沒有?

相似的,顯示檔案的前n個位元組,以及除了最後n個位元組以外的內容也沒問題了.

headtail如果組合使用:

head -n 5 /etc/passwd | tail -n 3

輸出/etc/passwd的第三道第五行.