vi/vim 中可以使用 :s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法(vi 真是強大啊,還有很多需要學習),記錄幾種在此,方便以後查詢。
替換 :s/vivian/sky/ 替換當前行第乙個 vivian 為 sky
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky
n 為數字,若 n 為 .,表示從當前行開始到最後一行
:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第乙個 vivian 為 sky
:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#vivian/#sky/# 替換當前行第乙個 vivian/ 為 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/
* ************************************
刪除文字中的^m
問題描述:對於換行,window下用回車換行(0a0d)來表示,linux下是回車(0a)來表示。這樣,將window上的檔案拷到unix上用時,總會有個^m.請寫個用在unix下的過濾windows檔案的換行符(0d)的shell或c程式。
· 使用命令:cat filename1 |
tr -d 「^v^m」 >newfile;
· 使用命令:sed -e 「s/^v^m//」 filename >outputfilename。需要注意的是在1、2兩種方法中,^v和^m指的是ctrl+v和ctrl+m。你必須要手工進行輸入,而不是貼上。
· 在vi中處理:首先使用vi開啟檔案,然後按esc鍵,接著輸入命令:%s/^v^m//。
· :%s/^m$//g
如果上述方法無用,則正確的解決辦法是:
· tr -d "r" dest
· tr -d "5" dest
· strings a>b
其它利用 :s 命令可以實現字串的替換。具體的用法包括:
:s/str1/str2/ 用字串 str2 替換行中首次出現的字串 str1
:s/str1/str2/g 用字串 str2 替換行中所有出現的字串 str1
:.,$ s/str1/str2/g 用字串 str2 替換正文當前行到末尾所有出現的字串 str1
:1,$ s/str1/str2/g 用字串 str2 替換正文中所有出現的字串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋
字串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜尋字串的行進行替換操作。
行首 :%s/^/your_word/
行尾 :%s/$/your_word/
按鍵操作:
注釋:ctrl+v 進入列編輯模式,向下或向上移動游標,把需要注釋的行的開頭標記起來,然後按大寫的i,再插入注釋符,比如"#",再按esc,就會全部注釋了。
刪除:先按v,進入visual模式,橫向選中列的個數(如"#"注釋符號,需要選中兩列),再按esc,再按ctrl+v 進入列編輯模式,向下或向上移動游標,選中注釋部分,然後按d, 就會刪除注釋符號(#)。
ps:當然不一定是shell的注釋符"#",也可以是"//",或者其他任意的字元;vim才不知道什麼是注釋符呢,都是字元而已。
使用替換命令:
在全部內容的行首新增//號注釋
:% s/^/\/\//g
在2~50行首新增//號注釋
:2,50 s/^/\/\//g
在2~50行首刪除//號
:2,50 s/^\/\///g
1. vim
vim 的安裝
yum install vim
2.游標的移動
用得最多的就是方向鍵上的 上下左右,和home 、end 鍵
還有就是字母鍵上的 hjkl
h : 表示向前
j:表示向下
k:表示向上
l : 表示向後
w和e : 游標會按乙個單詞的形式,往後移
b : 游標則會按乙個單詞的形式,往前移。
gg: 同時按兩下 小寫的gg,游標會移動到首行
gg:同時按兩下大定所gg,游標就會移動到末行
按下冒號:然後在冒號後面輸入數字,然後回車,游標就會到指定行數的行首。
3.vim的複製貼上
a . 複製選中的:
游標移動到你要選中的文字前或後,然後按一下v鍵
再移動游標,若是要複製就按一下y鍵,若是要剪下就按一上d鍵
然後,再把游標移動到你想要貼上的地方,按一下p鍵。
案例:b04f2753d1c4b828042763203ba8d374.png-wh_
按v後選中,然後再按y 複製
0b668c17b1489e693f72d98e96876f91.png-wh_
把游標移動到要貼上的地方 ,按p
3baad90a2ae4cd486364c821e0dea381.png-wh_
按v後,移動游標選中,
ca52208cb1babc6663d3eff527ef88e2.png-wh_
然後按d 剪下
2271a9d3d58679b5a8d316a1d1f24c4f.png-wh_
然後,移到游標到要貼上的地方按p
上面是單個複製或剪下
以行來複製或剪下
1行,就是把游標移動到當前行,然後,按yy就是複製 ,按dd,就是剪下 ,然後移動游標
到需要貼上的位置按p
n行, 就是 nyy 或 ndd p
這裡是,從游標往下數的n行。
以上就是vim的 移動 複製 剪下 貼上。
vi vim 字串替換
s s1 s2 用字串s2替換每行的第乙個字串s1 s s1 s2 g 用字串s2替換每行的所有字串s1 n,s s1 s2 用字串s2替換從n行開始到最後一行,每行的第乙個字串s1 n,s s1 s2 g 用字串s2替換從n行開始到最後一行的所有字串s1 s s1 s2 g 用字串s2替換從當前行...
vi vim 中替換字串
vi vim 中可以使用 s 命令來替換字串。s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian 為 sky n,s vivian sky 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky 2,s v...
Linux環境下vi vim 進行字元替換
第一種方法 s en mn 替換當前行第乙個 en 為 mn s en mn g 替換當前行所有 en 為 mn n,s en mn 替換第 n 行開始到最後一行中每一行的第乙個 en 為 mn n,s en mn g 替換第 n 行開始到最後一行中每一行所有 en 為 mn n 為數字,若 n 為...