在日常工作中會(huì)遇到需要篩選過濾要查看的日志等文本文件的任務(wù),例如需要查看日志文件的最后幾行等。下面總結(jié)一下常見的對文本行過濾的方法。一起去看看吧!
常用命令行工具
接下來主要使用的是head,tail,sed和awk,這幾個(gè)工具。其中sed和awk工具非常強(qiáng)大,使用它們來進(jìn)行文本的過濾可能有點(diǎn)大材小用,不過基本上所有的任務(wù)都可以通過head和tail兩個(gè)命令來完成,而且head和tail日常使用更加方便。
用法示例
準(zhǔn)備工作
輸入下面命令,生成一個(gè)測試用的文件。
$ 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兩個(gè)工具:
$ 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
小結(jié)
linux系統(tǒng)的一個(gè)有名的特點(diǎn)是絕大多少文件都是文本文件,這些文件都可以通過上面的方法來查看特定的行。另外linux命令行工具也非常靈活,完成一件任務(wù),不是只有一種方法,有很多方法可以實(shí)現(xiàn),這也是linux好玩的地方。在文本過濾方面,sed和awk命令還有很多強(qiáng)大的用法,大家有興趣的話可以深入研究一下。
WindowsSubsystem for Linux(WSL)2對Windows10版本1903和1909的支持 根據(jù)客戶......
閱讀微軟已經(jīng)向開發(fā)通道中的Windows Insiders宣布了Windows 10 Insider Prev......
閱讀bull; Wine最近收到了對6.0版的更新。 bull; 此更新改進(jìn)了使用Wine的......
閱讀有趣的是,微軟正在努力使Linux在Windows10下運(yùn)行。我們都熟悉W......
閱讀適用于 Linux 的 Windows 子系統(tǒng)既是一種啟示,也是一場革命。現(xiàn)在......
閱讀近日,有些朋友問小編如何恢復(fù)Linux桌面下方面板上顯示最小化的圖標(biāo)?今天小編將為大家分享恢復(fù)Linux桌面下方面板上顯示最小化的圖標(biāo)的方法,希望對大家會(huì)有幫助,有需要的朋友一...
次閱讀
今天小編要為大家?guī)淼氖荓inux使用文本瀏覽器lynx并顯示中文的方法!希望對大家會(huì)有幫助,有需要的朋友一起去看看吧...
次閱讀
在Linux系統(tǒng)中有很多命令,xlsatoms命令可以用來定義搜索文件的范圍和成分。今天小編將為大家分享的是Linux系統(tǒng)xlsatom命令的使用說明,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧...
次閱讀
今天小編將為大家?guī)淼氖桥R時(shí)更改Linux??臻g大小的方法,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧...
次閱讀
最近一些朋友問小編Linux Mount NTFS分區(qū)造成的權(quán)限問題如何解決?今天小編將為大家?guī)淼氖荓inux Mount NTFS分區(qū)造成的權(quán)限問題的解決方案,希望對大家會(huì)有幫助,有需要的朋友一起去看看...
次閱讀
適用于 Linux 5.16 的新 Zstd 已準(zhǔn)備就緒,性能提升高達(dá) 35% 最近,為 Linux 5.16 內(nèi)核準(zhǔn)備的新 Zstd 已提交給linux-next 合并,以便在接下來的幾周內(nèi)進(jìn)行更廣泛的測試。...
次閱讀
下面小編將為大家?guī)淼氖荓inux系統(tǒng)swap和zram swap的使用詳解,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧...
次閱讀
bull; Wine最近收到了對6.0版的更新。 bull; 此更新改進(jìn)了使用Wine的Linux系統(tǒng)上的Windows應(yīng)用程序。 bull; Wine可用于在非本機(jī)系統(tǒng)上運(yùn)行Windows應(yīng)用程序和...
次閱讀
有趣的是,微軟正在努力使Linux在Windows10下運(yùn)行。我們都熟悉WSL(Linux的Windows子系統(tǒng))。現(xiàn)在,WSLg(用于Linux GUI的Windows子系統(tǒng))隨之出現(xiàn)。 這樣就可以直接在Windo...
次閱讀
微軟已經(jīng)向開發(fā)通道中的Windows Insiders宣布了Windows 10 Insider Preview Build 20246 。 通過內(nèi)部版本20246,Microsoft使用戶可以輕松地通過單行命令(wsl.exe nda...
次閱讀
這篇文章主要講述了linux系統(tǒng)很卡的基本排查方法介紹。希望對大家會(huì)有幫助,下面就隨小編一起去看看具體的操作吧...
次閱讀
最近一些朋友問小編Linux下如何設(shè)置交換文件?今天小編將為大家?guī)淼氖荓inux下設(shè)置交換文件的方法,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧...
次閱讀
Linux編程時(shí)出現(xiàn)Segmentation fault錯(cuò)誤如何解決?今天小編要為大家分享的就是Linux編程時(shí)出現(xiàn)Segmentation fault錯(cuò)誤的處理辦法,有需要的朋友可以參考下...
次閱讀
今天小編為大家分享的是Linux以form表單形式上傳文件講解,希望對大家會(huì)有幫助,有需要的朋友可以參考下...
次閱讀
在實(shí)際使用過程中,若一個(gè)目錄下文件或文件夾太多,在執(zhí)行“*” 命令時(shí) 會(huì)提示Argument list too long,如rm -rf /tmp/*命令下...
次閱讀