linux命令,如何根據關鍵字查詢,如何替換某個關鍵字,vi中如何複製
如何根據關鍵字查詢
如果是在檔案的外面
grep -rl 關鍵字 目錄
例如:查詢/home下所有內容含有hello的檔案。grep -rl ‘hello’ /home
r:遞迴目錄與子目錄查詢
l:只列出檔案全名
如果是在沒有開啟檔案的前提就用"cat 檔名 | grep "關鍵字""
如果是用vi開啟檔案後,在命令列下輸入“: /關鍵字” 按n會跳到下一個 , 按N會跳到上一個
在用vi開啟檔案後,怎麼替換某個關鍵字
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”
多檔案的關鍵字替換 ,三種方式
Mahuinan法:
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:在游標所在位置的前面插入複製的文