天天看點

Linux如何搜尋查找檔案裡面内容

   在Linux系統當中,如何搜、索查找檔案裡面的内容呢? 這個應該是系統維護、管理當中遇到最常見的需求。那麼下面介紹,總結一下如何搜尋、查找檔案當中的内容。

搜尋、查找檔案當中的内容,一般最常用的是grep指令,另外還有egrep, vi指令也能搜尋檔案裡面内容

1:搜尋某個檔案裡面是否包含字元串,使用grep "search content" filename1, 例如

$ grep ORA alert_gsp.log

$ grep "ORA" alert_gsp.log

例如我們需要搜尋、查找utlspadv.sql檔案中包含ORA的字元内容

如上所示,這個是一個模糊比對,其實我是想要檢視ORA這類錯誤,那麼我要過濾掉哪一些沒有用的,搜尋的内容修改一下即可(當然也可以使用特殊參數,後面有講述),如下所示。

<a href="http://images2015.cnblogs.com/blog/73542/201608/73542-20160824121327448-1286126259.png"></a>

2: 如果你想搜尋多個檔案是否包含某個字元串,可以使用下面方式

grep "search content" filename1 filename2.... filenamen

grep "search content" *.sql

例如我想檢視目前目錄下,哪些sql腳本包含視圖v$temp_space_header(注意:搜尋的内容如果包含特殊字元時,必須進行轉義處理,如下所示)

<a href="http://images2015.cnblogs.com/blog/73542/201608/73542-20160824121329401-33115112.png"></a>

3:如果需要顯示搜尋文本在檔案中的行數,可以使用參數-n

4: 如果搜尋時需要忽略大小寫問題,可以使用參數-i

另外,例如檢查安裝的MySQL元件

5:從檔案内容查找不比對指定字元串的行:

$ grep –v "被查找的字元串" 檔案名

例如查找某些程序時,我們不想顯示包含指令grep ora_mmon的程序,如下所示

6:搜尋、查找比對的行數:

$ grep -c "被查找的字元串" 檔案名

<a href="http://images2015.cnblogs.com/blog/73542/201608/73542-20160824121331558-1516082972.png"></a>

7:有些場景,我們并不知道檔案類型、或那些檔案包含有我們需要搜尋的字元串,那麼可以遞歸搜尋某個目錄以及子目錄下的所有檔案

[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:如果我們隻想擷取那些檔案包含搜尋的内容,那麼可以使用下指令

[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/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

9:如果隻想擷取和整個搜尋字元比對的内容,那麼可以使用參數w

你可以對比一下兩者的差別

10: grep指令結合find指令搜尋

11: egrep -w -R 'word1|word2' ~/klbtmp

12: vi指令其實也能搜尋檔案裡面的内容,隻不過沒有grep指令功能那麼友善、強大。

參考資料:

<a href="http://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/">http://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/</a>