利用linux命令行工具進行文本行過濾的方法

在日常工作中會遇到需要篩選過濾要查看的日志等文本文件的任務,例如需要查看日志文件的最后幾行等。下面總結一下常見的對文本行過濾的方法。一起去看看吧!
常用命令行工具
接下來主要使用的是head,tail,sed和awk,這幾個工具。其中sed和awk工具非常強大,使用它們來進行文本的過濾可能有點大材小用,不過基本上所有的任務都可以通過head和tail兩個命令來完成,而且head和tail日常使用更加方便。
用法示例
準備工作
輸入下面命令,生成一個測試用的文件。
$ seq -f "Line No %g" 10 > lines.txt
只顯示文本的前3行
可以通過head命令來完成,具體命令和輸出如下:
$ head -n 3 lines.txt
Line No 1
Line No 2
Line No 3
或者通過sed命令來完成,具體命令和輸出如下:
$ sed -n '1,3p' lines.txt
Line No 1
Line No 2
Line No 3
awk命令也可以完成
$ awk 'NR<=3' lines.txt
Line No 1
Line No 2
Line No 3
只顯示文本的最后3行
使用tail命令來完成,具體命令和輸出如下:
$ tail -n 3 lines.txt
Line No 8
Line No 9
Line No 10
只顯示文本的第5行到最后1行
使用tail命令來完成的方法:
$ tail -n +5 lines.txt
Line No 5
Line No 6
Line No 7
Line No 8
Line No 9
Line No 10
sed命令來完成:
$ sed -n '5,$p' lines.txt
Line No 5
--略--
Line No 10
用awk來完成:
$ awk 'NR>=5' lines.txt
Line No 5
--略--
Line No 10
只顯示文本的倒數(shù)第3行到第1行
用head來完成:
$ head -n -2 lines.txt
Line No 1
Line No 2
Line No 3
Line No 4
Line No 5
Line No 6
Line No 7
Line No 8
只顯示文本的第6行到第8行
用head和tail兩個工具:
$ < lines.txt head -n 8 | tail -n 3
Line No 6
Line No 7
Line No 8
sed的方法:
$ sed -n '6,8p' lines.txt
Line No 6
Line No 7
Line No 8
awk的方法:
$ awk '(NR>=6)&&(NR<=8)' lines.txt
Line No 6
Line No 7
Line No 8
只顯示文本奇數(shù)行或偶數(shù)行
sed命令生成奇數(shù)行
$ sed -n '1~2p' lines.txt
Line No 1
Line No 3
Line No 5
Line No 7
Line No 9
sed命令生成偶數(shù)行
$ sed -n '0~2p' lines.txt
Line No 2
Line No 4
Line No 6
Line No 8
Line No 10
awk命令生成奇數(shù)行
$ awk 'NR%2' lines.txt
Line No 1
Line No 3
Line No 5
Line No 7
Line No 9
awk命令生成偶數(shù)行
$ awk '(NR+1)%2' lines.txt
Line No 2
Line No 4
Line No 6
Line No 8
Line No 10
小結
linux系統(tǒng)的一個有名的特點是絕大多少文件都是文本文件,這些文件都可以通過上面的方法來查看特定的行。另外linux命令行工具也非常靈活,完成一件任務,不是只有一種方法,有很多方法可以實現(xiàn),這也是linux好玩的地方。在文本過濾方面,sed和awk命令還有很多強大的用法,大家有興趣的話可以深入研究一下。
相關文章
GNOME桌面環(huán)境下設置彩色的Linux命令行終端界面的方法
我們經(jīng)??吹桨袳macs和Vim編輯器調(diào)成彩色的示例,而在GUI環(huán)境下Linux的Terminal界面調(diào)成彩色同樣簡單方便,這里我們就來為大家介紹GNOME桌面環(huán)境下設置彩色的Linux命令行終端2016-06-28Linux的CLI命令行界面系統(tǒng)操作基礎上手指南
以終端命令行方式操作是Linux系統(tǒng)的精華,因為Linux大多服役于服務器設備上,所以建議大家也是以CLI(command-line interface)來入門Linux,這里就來為大家Linux的CLI命令行界2016-06-16- 這篇文章主要介紹了Linux下的命令行串口工具minicom安裝和使用教程,要注意的是在使用minicom之前,首先要保證你對串口有讀/寫的權限,需要的朋友可以參考下2016-05-19
- 這篇文章主要介紹了Linux的命令行中一些文本操作技巧的實例分享,包括tr命令與grep命令等的實際應用,需要的朋友可以參考下2015-11-27
- 對于Linux 桌面用戶來說,有很多辦法獲取天氣預報,比如使用專門的天氣應用、桌面小插件,或者面板小程序。但是如果你的工作環(huán)境是基于終端的,這里也有一些在命令行下獲取2015-10-20
命令行查看Linux的系統(tǒng)版本和內(nèi)核版本以及機器字長
這篇文章主要介紹了命令行查看Linux的系統(tǒng)版本和內(nèi)核版本以及機器字長,是一些Linux入門學習中的基礎命令,需要的朋友可以參考下2015-07-07- 這篇文章主要介紹了Linux命令行中采集指定頁面的圖片地址及圖片下載,本文介紹用curl 和grep以及結合wget命令實例實現(xiàn)下載,需要的朋友可以參考下2015-07-06
- 這篇文章主要介紹了在Linux的命令行中操作屏幕錄制的方法,適用于操作script和scriptreplay兩個內(nèi)置軟件,需要的朋友可以參考下2015-07-02
- 這篇文章主要介紹了在Linux中使用命令行進行覆蓋文件的操作,即對unalias命令的運用,需要的朋友可以參考下2015-06-24
在Linux的命令行中實現(xiàn)字符出現(xiàn)頻率統(tǒng)計的方法
這篇文章主要介紹了在Linux的命令行中實現(xiàn)字符出現(xiàn)頻率統(tǒng)計的方法,文中展示了各種字詞以出現(xiàn)次數(shù)結果排序的命令行操作,需要的朋友可以參考下2015-06-18