Linux查找文件內(nèi)容的常用命令方法。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的木蘭網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
從文件內(nèi)容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
例子:在當(dāng)前目錄里第一級(jí)文件夾中尋找包含指定字符串的.in文件
grep "thermcontact" */*.in
從文件內(nèi)容查找與正則表達(dá)式匹配的行:
$ grep –e “正則表達(dá)式” 文件名
查找時(shí)不區(qū)分大小寫:
$ grep –i "被查找的字符串" 文件名
查找匹配的行數(shù):
$ grep -c "被查找的字符串" 文件名
從文件內(nèi)容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
學(xué)習(xí)更多l(xiāng)inux知識(shí)《Linux就該這么學(xué)》,從根目錄開始查找所有擴(kuò)展名為.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
例子:從當(dāng)前目錄開始查找所有擴(kuò)展名為.in的文本文件,并找出包含”thermcontact”的行
find . -name "*.in" | xargs grep "thermcontact"
搜索、查找文件當(dāng)中的內(nèi)容,一般最常用的是grep命令,另外還有egrep, vi命令也能搜索文件里面內(nèi)容
1:搜索某個(gè)文件里面是否包含字符串,使用grep "search content" filename1, 例如
$ grep ORA alert_gsp.log
$ grep "ORA" alert_gsp.log
例如我們需要搜索、查找utlspadv.sql文件中包含ORA的字符內(nèi)容
[oracle@DB-Server admin]$ grep "ORA" utlspadv.sql
--?? ORA-XXXXX:??????? Monitoring already started. If for example you want
--?? ORA-20111:
--?? ORA-20112:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
-- 0 |PS =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""
-- |PR DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM= 100% 0% 0% "" |PR ...
-- =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |PR ...
-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00
-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM
-- ORA-20111:
-- ORA-20112:
--?? ORA-20100:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$
如上所示,這個(gè)是一個(gè)模糊匹配,其實(shí)我是想要查看ORA這類錯(cuò)誤,那么我要過(guò)濾掉哪一些沒有用的,搜索的內(nèi)容修改一下即可(當(dāng)然也可以使用特殊參數(shù),后面有講述),如下所示。
[oracle@DB-Server admin]$ grep "ORA-" utlspadv.sql
--?? ORA-XXXXX:??????? Monitoring already started. If for example you want
--?? ORA-20111:
--?? ORA-20112:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
-- ORA-20111:
-- ORA-20112:
--?? ORA-20100:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$
2: 如果你想搜索多個(gè)文件是否包含某個(gè)字符串,可以使用下面方式
grep "search content" filename1 filename2.... filenamen
grep "search content" *.sql
例如我想查看當(dāng)前目錄下,哪些sql腳本包含視圖v$temp_space_header(注意:搜索的內(nèi)容如果包含特殊字符時(shí),必須進(jìn)行轉(zhuǎn)義處理,如下所示)
[oracle@DB-Server admin]$ grep "v\$temp_space_header" *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:??????????? FROM gv$temp_space_header
[oracle@DB-Server admin]$
3:如果需要顯示搜索文本在文件中的行數(shù),可以使用參數(shù)-n
[oracle@DB-Server admin]$ grep? -n "v\$temp_space_header" *.sql
catspacd.sql:68:drop public synonym v$temp_space_header;
catspacd.sql:71:drop public synonym gv$temp_space_header;
catspace.sql:1952:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:1953:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:1956:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:1957:create or replace public synonym gv$temp_space_header
catspace.sql:2357:??????????? FROM gv$temp_space_header
[oracle@DB-Server admin]$
4: 如果搜索時(shí)需要忽略大小寫問(wèn)題,可以使用參數(shù)-i
[oracle@DB-Server admin]$ grep? "V\$TEMP_SPACE_HEADER" *.sql
[oracle@DB-Server admin]$ grep -i "V\$TEMP_SPACE_HEADER"? *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:??????????? FROM gv$temp_space_header
[oracle@DB-Server admin]$
另外,例如檢查安裝的MySQL組件
[root@DB-Server init.d]# rpm -qa | grep -i mysql
MySQL-devel-5.6.23-1.linux_glibc2.5
MySQL-client-5.6.23-1.linux_glibc2.5
MySQL-server-5.6.23-1.linux_glibc2.5
5:從文件內(nèi)容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
例如查找某些進(jìn)程時(shí),我們不想顯示包含命令grep ora_mmon的進(jìn)程,如下所示
[oracle@DB-Server admin]$ ps -ef? | grep ora_mmon?
oracle?? 16675 16220? 0 00:09 pts/1??? 00:00:00 grep ora_mmon
oracle?? 21412???? 1? 0 Aug22 ???????? 00:00:07 ora_mmon_gsp
[oracle@DB-Server admin]$ ps -ef? | grep ora_mmon? | grep -v grep
oracle?? 21412???? 1? 0 Aug22 ???????? 00:00:07 ora_mmon_gsp
[oracle@DB-Server admin]$
6:搜索、查找匹配的行數(shù):
$ grep -c "被查找的字符串" 文件名
[oracle@DB-Server admin]$
[oracle@DB-Server admin]$ grep?? "v\$temp_space_header" *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:??????????? FROM gv$temp_space_header
[oracle@DB-Server admin]$ grep -c? "v\$temp_space_header"? catspacd.sql
2
[oracle@DB-Server admin]$ grep -c? "v\$temp_space_header"? catspace.sql
5
[oracle@DB-Server admin]$
7:有些場(chǎng)景,我們并不知道文件類型、或那些文件包含有我們需要搜索的字符串,那么可以遞歸搜索某個(gè)目錄以及子目錄下的所有文件
[oracle@DB-Server ~]$ grep -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;
[oracle@DB-Server ~]$
8:如果我們只想獲取那些文件包含搜索的內(nèi)容,那么可以使用下命令
[oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
[oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
[oracle@DB-Server ~]$
9:如果只想獲取和整個(gè)搜索字符匹配的內(nèi)容,那么可以使用參數(shù)w
你可以對(duì)比一下兩者的區(qū)別
[oracle@DB-Server admin]$ grep -w "ORA" utlspadv.sql
--?? ORA-XXXXX:??????? Monitoring already started. If for example you want
--?? ORA-20111:
--?? ORA-20112:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
-- ORA-20111:
-- ORA-20112:
--?? ORA-20100:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ grep? "ORA" utlspadv.sql
--?? ORA-XXXXX:??????? Monitoring already started. If for example you want
--?? ORA-20111:
--?? ORA-20112:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
-- 0 |PS =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""
-- |PR DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM= 100% 0% 0% "" |PR ...
-- =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |PR ...
-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00
-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM
-- ORA-20111:
-- ORA-20112:
--?? ORA-20100:
--?? ORA-20113: 'no active monitoring job found'
--?? ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$
10: grep命令結(jié)合find命令搜索
[oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print
create or replace view v_$temp_space_header as select * from v$temp_space_header;
create or replace public synonym v$temp_space_header for v_$temp_space_header;
create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
create or replace public synonym gv$temp_space_header
FROM gv$temp_space_header
./catspace.sql
drop public synonym v$temp_space_header;
drop public synonym gv$temp_space_header;
./catspacd.sql
[oracle@DB-Server admin]$
11: egrep -w -R 'word1|word2' ~/klbtmp
12: vi命令其實(shí)也能搜索文件里面的內(nèi)容,只不過(guò)沒有g(shù)rep命令功能那么方便、強(qiáng)大。
Linux下查看文件內(nèi)容的命令
查看文件內(nèi)容的命令:
cat 由第一行開始顯示內(nèi)容,并將所有內(nèi)容輸出
tac 從最后一行倒序顯示內(nèi)容,并將所有內(nèi)容輸出
more根據(jù)窗口大小,一頁(yè)一頁(yè)的現(xiàn)實(shí)文件內(nèi)容
less 和more類似,但其優(yōu)點(diǎn)可以往前翻頁(yè),而且進(jìn)行可以搜索字符
head 只顯示頭幾行
tail 只顯示最后幾行
nl 類似于cat -n,顯示時(shí)輸出行號(hào) 《Linux就該這么學(xué)》 一起學(xué)習(xí)linux
tailf 類似于tail -f
linux系統(tǒng)查看文件內(nèi)容的命令包括但不僅限于cat、tac、more、less、head、tail、nl、tailf,tail –f,
本文題目:linux查找正文命令 linux查找命令位置
文章地址:http://chinadenli.net/article16/dojhpgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、外貿(mào)建站、網(wǎng)站改版、Google、小程序開發(fā)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)