利用linux命令行工具進(jìn)行文本行過濾的方法
在日常工作中會遇到需要篩選過濾要查看的日志等文本文件的任務(wù),例如需要查看日志文件的最后幾行等。下面總結(jié)一下常見的對文本行過濾的方法。一起去看看吧!
常用命令行工具
接下來主要使用的是head,tail,sed和awk,這幾個工具。其中sed和awk工具非常強(qiáng)大,使用它們來進(jìn)行文本的過濾可能有點大材小用,不過基本上所有的任務(wù)都可以通過head和tail兩個命令來完成,而且head和tail日常使用更加方便。
用法示例
準(zhǔn)備工作
輸入下面命令,生成一個測試用的文件。
$ 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
小結(jié)
linux系統(tǒng)的一個有名的特點是絕大多少文件都是文本文件,這些文件都可以通過上面的方法來查看特定的行。另外linux命令行工具也非常靈活,完成一件任務(wù),不是只有一種方法,有很多方法可以實現(xiàn),這也是linux好玩的地方。在文本過濾方面,sed和awk命令還有很多強(qiáng)大的用法,大家有興趣的話可以深入研究一下。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。