vim中字符串的替換


vi/vim 中可以使用 :s 命令來替換字符串

: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" < src >dest

· tr -d "\015" dest

· strings A>B

 

1) 文件內全部替換:
 
:%s#abc#123#g (如文件內有#,可用/替換,:%s/abc/123/g)
  --注:把abc替換成123
 
(或者: %s/str1/str2/g 用str2替換文件中所有的str1)
 
2) 文件內局部替換:
 
 :20,30s#abc#123(如文件內有#,可用/替換,:%s/abc/123/g)
  --注:把20行到30行內abc替換成123

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM