linux命令,如何根據關鍵字查詢,如何替換某個關鍵字,vi中如何複製

如何根據關鍵字查詢緩存

若是是在文件的外面ui

grep -rl 關鍵字 目錄
例如:查找/home下全部內容含有hello的文件。grep -rl ‘hello’ /home
r:遞歸目錄與子目錄查找
l:只列出文件全名命令行

若是是在沒有打開文件的前提就用"cat 文件名 | grep "關鍵字""htm

 

若是是用vi打開文件後,在命令行下輸入「: /關鍵字」    按n會跳到下一個 , 按N會跳到上一個blog

若是要取消的話,則輸入    :set nonu
行號的設置是vi的環境設置,不會影響文本的內容。遞歸

在用vi打開文件後,怎麼替換某個關鍵字get

1. 基本替換
:s/str1/str2/ 替換當前行第一個str1爲str2
:s/str1/str2/g 替換當前行全部str1爲str2
:n,$s/str1/str2/ 替換第 n 行開始到最後一行中每一行的第一個str1爲str2
:n,$s/str1/str2/g 替換第 n 行開始到最後一行中每一行全部str1爲str2
(n 爲數字,若 n 爲 .,表示從當前行開始到最後一行)
:%s/str1/str2/(等同於 :g/str1/s//str2/) 替換每一行的第一個str1爲str2
:%s/str1/str2/g(等同於 :g/str1/s//str2/g) 替換每一行中全部str1爲str2
2. 能夠使用 # 做爲分隔符,此時中間出現的 / 不會做爲分隔符
:s#str1/#str2/# 替換當前行第一個str1/ 爲str2/

在VI的命令模式下輸入「:set nu」  完整的是  「:set number」ast

 

多文件的關鍵字替換 ,三種方式擴展

Mahuinan法:sed

sed -i "s/oldString/newString/g" `grep oldString -rl /path/*.txt`

Sumly法

執行命令:

perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt

上面的意思是說將www文件夾下全部的htm和txt文件中的「China」都替換爲「Sumly」

30T法

執行命令:

perl -pi -e 's|baidu|30T|g' `find /www -type f`

上面的意思是說將www文件夾下全部文件,不分擴展名,全部的「baidu」都替換爲「30T」

 

 

複製操做
  yy命令複製當前整行的內容到vi緩衝區
  yw複製當前光標所在位置到單詞尾字符的內容到vi緩存區,至關於複製一個單詞
  y$複製光標所在位置到行尾內容到緩存區
  y^複製光標所在位置到行首內容到緩存區
  nyy例如:5yy就是複製5行
  nyw例如:2yw就是複製兩個單詞

  若是要複製第m行到第n行之間的內容,能夠在末行模式中輸入m,ny例如:3,5y複製第三行到第五行內容到緩存區。
 

粘貼

p:在光標所在位置的後面插入複製的文本,p是paste的首字母。

P:在光標所在位置的前面插入複製的文本。

np:在光標所在位置的後面插入複製的文本,共複製n次。

nP:在光標所在位置的前面插入複製的文本,共複製n次。

相關文章
相關標籤/搜索