linux搜索關鍵字
❶ linux伺服器文本關鍵字搜索替換
1、vi命令下的查找和替換
1.1 vi下的查找
/hello<Enter> :向下查找hello匹配字元串
?hello<Enter>:向上查找hello匹配字元串
使用了查找命令之後,使用如下兩個鍵快速查找:
n:按照同一方向繼續查找
N:按照反方向查找
hello是需要匹配的字元串,例如:
/name<Enter> #查找name
/name<Enter> #查找name單詞(注意前後的空格)
除此之外,hello還可以使用一些特殊字元,包括(/、^、$、*、.),其中前三個這兩個是vi與vim通用的,「/」為轉義字元。
/^name<Enter> #查找以name開始的行
/name$<Enter> #查找以name結束的行
//^name<Enter> #查找^name字元串
1.2 vi下的替換
:s/name/title/ #替換當前行第一個 name 為 title
:s/name/title/g #替換當前行所有 name 為 title
:n,$s/name/title/ #替換第 n 行開始到最後一行中每一行的第一個 name 為 title
:n,$s/name/title/g #替換第 n 行開始到最後一行中每一行所有 name 為 title
#(n 為數字,若 n 為 .,表示從當前行開始到最後一行)
:%s/name/title/ #(等同於 :g/name/s//title/) 替換每一行的第一個 name 為 title
:%s/name/title/g #(等同於 :g/name/s//title/g) 替換每一行中所有 name 為 title
可以使用 #或+ 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#name/#title/# 替換當前行第一個 name/ 為 title/
:%s+/oradata/apras/+/user01/apras1+ (
使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/
2.sed和grep配合
命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`
作用:將當前目錄(包括子目錄)中所有txt文件中的yyyy字元串替換為xxxx字元串。其中,
-i 表示操作的是文件,``括起來的grep命令,表示將grep命令的的結果作為操作文件。
s/yyyy/xxxx/表示查找yyyy並替換為xxxx,後面跟g表示一行中有多個yyyy的時候,都替換,而不是僅替換第一個
另外,如果不需要查找子目錄,僅需要在當前目錄替換,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt
3.find命令查找和替換
命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替換的字元串|替換後的字元串|g'
#查找替換當前目錄下包含字元串並進行替換
find -name '*.txt' | xargs perl -pi -e 's|江蘇|上海|g'
#遞歸查找替換
find . -type f -name '*.html' | xargs perl -pi -e 's|蘇州|上海|g'
❷ Linux如何在vi里搜索關鍵字
在命令模式下敲斜桿( / )這時在狀態欄(也就是屏幕左下腳)就出現了 「/」 然後輸入你要查找的關鍵字敲回車就可以了。
如果你要繼續查找此關鍵字,敲字元 n 就可以繼續查找了。
❸ Linux 怎麼搜索關鍵字
方法一:find命令
find是最常見和最強大的查找命令,你可以用它找到任何你想找的文件。
命令格式:find <指定目錄> <指定條件> <指定動作>
- <指定目錄>: 所要搜索的目錄及其所有子目錄。默認為當前目錄。
- <指定條件>: 所要搜索的文件的特徵。
- <指定動作>: 對搜索結果進行特定的處理。
如果什麼參數也不加,find默認搜索當前目錄及其子目錄,並且不過濾任何結果(也就是返回所有文件),將它們全都顯示在屏幕上。
使用實例:
$ find . -name 'my*'
搜索當前目錄(含子目錄,以下同)中,所有文件名以my開頭的文件。
$ find . -name 'my*' -ls
搜索當前目錄中,所有文件名以my開頭的文件,並顯示它們的詳細信息。
$ find . -type f -mmin -10
搜索當前目錄中,所有過去10分鍾中更新過的普通文件。如果不加-type f參數,則搜索普通文件+特殊文件+目錄。
方法二:locate命令
locate命令其實是"find -name"的另一種寫法,但是要比後者快得多,原因在於它不搜索具體目錄,而是搜索一個資料庫(/var/lib/locatedb),這個資料庫中含有本地所有文件信息。Linux系統自動創建這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新資料庫。
使用實例:
$ locate /etc/sh
搜索etc目錄下所有以sh開頭的文件。
$ locate ~/m
搜索用戶主目錄下,所有以m開頭的文件。
$ locate -i ~/m
搜索用戶主目錄下,所有以m開頭的文件,並且忽略大小寫。
❹ linux查找內容命令
find,用於在文件樹中查找文件並作相應的處理
-name:按照文件名查找文件
-perm:按照文件許可權查找文件
-user:按照文件屬主來查找文件
-size:按照指定的文件大小查找文件【+n:大於,-n:小於,n:等於】
-group:按照文件所屬的組來查找文件
-mtime<-n><+n>:按照文件更改時間來查找文件,-n表示n天之內,+n表示n天以前
-newer file1 file2:查找更改時間在file1和file2之間的文件
例如:
find -mtime -2:查找48小時修改過的文件
find -name ".log":查找當前目錄以".log"結尾的文件
find /opt/soft/test -perm 777:查找指定目錄下許可權為777的文件
find -type f -name "*.log":查找當前目錄下以".log"結尾的普通文件
find -type d | sort:查找當前所有目標目錄並排序
find /home/wansw -size +20M:查找大於20M的文件
updatedb:第一次運行前,創建locate資料庫
locate指令,可以快速定位文件路徑,利用事先建立的系統中的所有文件名稱和路徑的locate資料庫,無需遍歷整個文件系統,查詢速度較快,為了保證查詢准確性,需要定期更新。《Linux就該這么學》
grep,用於過濾/搜索指定字元串。可以使用正則表達式,能配合多種命令使用。
用法:grep 【選項】 查找內容 源文件
-A:顯示符合的行及之後的內容
-B:顯示符合的行及之前的內容
-C:顯示符合的行及前後的內容
-c:計算符合的行數目
-n:顯示匹配行和行號
-i:忽略大小寫
規則表達式
:'grep'表示匹配所有以grep開頭的行
'表示匹配所有以grep結尾的行
.:'gr.p'表示匹配'gr'後面接任意字元然後是'p'
:'grep'表示匹配一個或多個空格後緊跟grep的行
[]:[Gg]rep表示匹配Grep與grep
[]:[A-FH-Z]rep表示匹配不以A-F、H-Z開頭並緊跟rep的行
例如(grep命令大多數時候多要和別的命令一起使用才有意義):
ps -ef | grep -c SVN:查找指定的進程的個數
cat test.txt | grep -f test2.txt:從text2.txt中讀取關鍵字後在test.txt中搜索
cat test.txt | grep nf text2.txt:從text2.txt中讀取關鍵字後在text.txt中搜索並顯示行號
grep 'linux' text.txt test2.txt:從多個文件中搜索關鍵字'linux'
cat test.txt | grep -E 'ed|at':顯示包含ed或at的行