日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux vi模式替换,linux基础命令之:vi模式下查找和替换

發布時間:2024/2/28 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux vi模式替换,linux基础命令之:vi模式下查找和替换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、查找

查找命令

/pattern :向下查找pattern匹配字符串

?pattern:向上查找pattern匹配字符串

使用了查找命令之后,使用如下兩個鍵快速查找:

n:按照同一方向繼續查找

N:按照反方向查找

pattern是需要匹配的字符串,例如:

/hello????? #查找hello

/hello??? #查找hello單詞(注意前后的空格)

除此之外,pattern還可以使用一些特殊字符,包括(/、^、$、*、.),其中前三個這兩個是vi與vim通用的,“/”為轉義字符。

/^hello??? #查找以hello開始的行

/hello$??? #查找以hello結束的行

//^hello??? #查找^hello字符串

二、替換

1.:[range]s/pattern/string/[c,e,g,i]

range???? 指的是范圍,

1,7 指從第一行至第七行,1,$ 指從第一行至最后一行,也就是整篇文章,也可以 % 代表。

% 是目前編輯的文章,# 是前一次編輯的文章。

pattern???? 就是要被替換掉的字串,可以用 regexp 來表示。

string???? 將 pattern 由 string 所取代。

c???? confirm,每次替換前會詢問。

e???? 不顯示 error。

g???? globe,不詢問,整行替換。

i???? ignore 不分大小寫。

I???? ignore 大小寫敏感。

2.基本替換

:s/lantian/sky/???????? #替換當前行第一個 lantian 為 sky

:s/lantian/sky/g???? #替換當前行所有 lantian 為 sky

:n,$s/lantian/sky/???? #替換第 n 行開始到最后一行中每一行的第一個 lantian 為 sky

:n,$s/lantian/sky/g???? #替換第 n 行開始到最后一行中每一行所有 lantian 為 sky

#(n 為數字,若 n 為 .,表示從當前行開始到最后一行)

:%s/lantian/sky/??????? #(等同于 :g/lantian/s//sky/) 替換每一行的第一個?lantian 為 sky

:%s/lantian/sky/g??? #(等同于 :g/lantian/s//sky/g) 替換每一行中所有?lantian 為 sky

可以使用 #或+ 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#lantian/#sky/#???????? 替換當前行第一個 lantian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1+ (

使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

3.刪除文本中的^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

4.其它用法

: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????? #功能同上

5.g的總結說明

從上述替換命令可以看到:

g 放在命令末尾,表示對指定行的搜索字符串的每次出現進行替換;不加 g,表示只對指定行的搜索字符串的首次出現進行替換;

g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。

也就是說命令的開始可以添加影響的行,如果為g表示對所有行;命令的結尾可以使用g來表示是否對每一行的所有字符串都有影響。

總結

以上是生活随笔為你收集整理的linux vi模式替换,linux基础命令之:vi模式下查找和替换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。