一、vi編輯器有3種基本工作模式
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、網(wǎng)站頁面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站制作公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。
分別是:命令模式、文本輸入模式、和末行模式。
第一:命令行模式:
該模式是進(jìn)入vi編輯器后的默認(rèn)模式。任何時(shí)候,不管用戶處于何種模式,按下ESC鍵即可進(jìn)入命令模式。在該模式下,用戶可以輸入vi命令,用戶管理自己的文檔。此時(shí)從鍵盤上輸入的任何字符都被當(dāng)作編輯命令來解釋。若輸入的字符是合法的vi命令,則vi在接受用戶命令之后完成相應(yīng)的動作。但需要注意的是,所輸入的命令并不回顯在屏幕上。若輸入的字符不是vi命令,vi會響鈴報(bào)警。
第二:文本輸入模式:
在命令模式下輸入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s都可以進(jìn)入文本輸入模式。在該模式下,用戶輸入的任何字符都被vi當(dāng)作文件內(nèi)容保護(hù)起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按ESC鍵即可。
第三:末行模式:
末行模式也稱ex轉(zhuǎn)義模式。在命令模式下,用戶按“:”鍵即可進(jìn)入末行模式下,此時(shí)vi會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個(gè)“:”作為末行模式的說明符,等待用戶輸入命令。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫到文件中等)。末行命令在執(zhí)行完后,vi自動回到命令模式。如果要從命令模式轉(zhuǎn)換到編輯模式,可以鍵入a或者i。如果需要從文本模式返回,則按ESC即可。在命令模式下輸入“:”即可切換到末行模式,然后輸入命令。
實(shí)例演示
首先我們使用命令 vi filename 打開一個(gè)文件,這個(gè)時(shí)候進(jìn)入到的是命令模式
接下來我們按i,然后鍵盤隨便輸入寫內(nèi)容。
然后按ESC重新進(jìn)入到命令模式。
在命令模式的情況下,我們按:,進(jìn)入到了末行模式。
我們輸入wq!,然后回車,強(qiáng)行保存退出。
下次我們再打開對應(yīng)文件(可用less filename命令打開),即可看到內(nèi)容已經(jīng)更改。
補(bǔ)充:
(1)末行模式下:q! 【強(qiáng)制退出不保存】 q【退出不保存】 wq【退出并保存后面也可以加個(gè)!】
(2)如果你不想保存直接退出有可以在命令模式下使用“ctrl+z”快捷鍵或者按住“shift”鍵,輸入兩個(gè)z即可退出。
更多命令
進(jìn)入vi的命令:
vi filename :打開或新建文件,并將光標(biāo)置于第一行首
vi +n filename :打開文件,并將光標(biāo)置于第n行首
vi + filename :打開文件,并將光標(biāo)置于最后一行首
vi +/pattern filename:打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename :在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
vi filename….filename :打開多個(gè)文件,依次進(jìn)行編輯
屏幕翻滾類命令:
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部。
插入文本類命令:
i :在光標(biāo)前
I :在當(dāng)前行首
a:光標(biāo)后
A:在當(dāng)前行尾
o:在當(dāng)前行之下新開一行
O:在當(dāng)前行之上新開一行
r:替換當(dāng)前字符
R:替換當(dāng)前字符及其后的字符,直至按ESC鍵
s:從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令:
ndw或ndW:刪除光標(biāo)處開始及其后的n-1個(gè)字
do:刪至行首
d$:刪至行尾
ndd:刪除當(dāng)前行及其后n-1行
x或X:刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令:
/pattern:從光標(biāo)開始處向文件尾搜索pattern
?pattern:從光標(biāo)開始處向文件首搜索pattern
n:在同一方向重復(fù)上一次搜索命令
N:在反方向上重復(fù)上一次搜索命令
:s/p1/p2/g:將當(dāng)前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
撤銷回退命令:
u 撤銷上一步的操作
Ctrl+r 恢復(fù)上一步被撤銷的操作
選項(xiàng)設(shè)置:
all:列出所有選項(xiàng)設(shè)置情況
term:設(shè)置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標(biāo)志($)
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉(zhuǎn)到別的文件時(shí)若沒保存當(dāng)前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
末行模式命令:
:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當(dāng)前文件
:e filename:打開文件filename進(jìn)行編輯
:x:保存當(dāng)前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:wq:保存并退出
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個(gè)文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當(dāng)前行
寄存器操作:
“?nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
“?nyw:將當(dāng)前行及其下n個(gè)字保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
“?nyl:將當(dāng)前行及其下n個(gè)字符保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
“?p:取出寄存器?中的內(nèi)容并將其放到光標(biāo)位置處。這里?可以是一個(gè)字母,也可以是一個(gè)數(shù)字
ndd:將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號刪除寄存器中。
可以使用 Linux 系統(tǒng)的拷貝命令 cp,對原來的文件進(jìn)行替換。例如:
$cp newfile oldfile
該命令的作用就是使用現(xiàn)在 newfile 的內(nèi)容,替換掉原來 oldfile 的內(nèi)容。
通過你的描述,替換命令如下:
1、tr 命令來進(jìn)行替換
[root@localhost ss1]# tr '111' '2222222' aa.txt
2、sed 命令
[root@localhost ss1]# sed ‘s/wyf/wzw/g’ ./person.txt
這里使用sed 內(nèi)置命令s 來實(shí)現(xiàn)替換功能,并且使用了全局替換標(biāo)志g 表示替換文件中匹配wyf的所有字符串。
溫馨提示:
1、tr 命令在接文件時(shí)比較特殊,需要輸入重定向符號 “”
2、凡是在文本中出現(xiàn)的“111”均應(yīng)轉(zhuǎn)換成“222222”,而不是僅僅將單個(gè)進(jìn)行轉(zhuǎn)換,這個(gè)要注意。
3、在使用sed 命令時(shí),要注意一下語法格式,將要替換的文本“wyf”放在第一個(gè)和第二個(gè)“/” 之間,將替換后的文本“wzw”放到第二個(gè)和第三個(gè)“/” 之間。這個(gè)要注意。
以上就是我的回答,在具體操作時(shí),可能會有出入,如有問題可??私信?+?關(guān)注,我會第一時(shí)間來進(jìn)行回復(fù)追答,希望我的回答能幫到你。
sed簡介:流編輯工具,用來對文本進(jìn)行過濾與替換操作。
sed流程:sed通過一次僅讀取一行內(nèi)容來對某些指令進(jìn)行處理后輸出。
1、sed通過文件或管道讀取文件內(nèi)容,但sed默認(rèn)并不直接修改源文件,而是將讀入的內(nèi)容復(fù)制到緩沖區(qū)中,稱之為模式空間。
2、所有的指令操作都是在模式空間找那個(gè)進(jìn)行
3、sed根據(jù)相應(yīng)的指令對模式空間中的內(nèi)容進(jìn)行處理并輸出結(jié)果,默認(rèn)輸出至標(biāo)準(zhǔn)輸出(即屏幕上)。
sed基本語法格式:
用法:sed[選項(xiàng)]...{腳本指令}[輸入文件]...
選項(xiàng): -version 顯示sed版本
-help :顯示幫助文檔
-n,-quiet,-silent靜默輸出,默認(rèn)情況下,sed程序在所有的腳本指令執(zhí)行完畢后,將自動打印模式空間中的內(nèi)容。
-e script允許多個(gè)腳本指令被執(zhí)行
-f script-file從文件中讀取腳本指令,對編寫自動化腳本程序很實(shí)用
-i ,-in-place 該選項(xiàng)直接修改源文件
-l N 該選項(xiàng)指定l指令可以輸出的行長度,l指令為輸出非打印字符。
-posix 禁用GNU sed擴(kuò)展功能。
-r 在腳本指令中使用擴(kuò)展正則表達(dá)式。
-s,-separate 默認(rèn)情況下,sed將把輸入的多個(gè)文件名作為一個(gè)長的連續(xù)的輸入流。而GNU sed則允許把它們當(dāng)作單獨(dú)的文件。
-u,-unbuffered 最低限度的緩存輸入與輸出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示刪除指令;
s,substitution表示替換指令。
sed腳本指令的基本格式是:
[地址,即路徑]命令(有些命令僅可以對一行操作,有些可以對多行操作),命令也可以用花括號進(jìn)行組合,使命令序列可以作用于同一個(gè)地址。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替換命令s:
1、全局替換 : s/old/new/g ,其中g(shù)為全局替換,用于替換所有出現(xiàn)的次數(shù); /如果和正則匹配的內(nèi)容沖突可以使用其他符號,如 : s@old@new@g
2、標(biāo)志位
為什么要有多行模式: 配置文件一般有單行出現(xiàn),但也有使用json或XML格式的配置文件,為多行出現(xiàn)。
多行模式處理命令N、D、P
可以這樣做:
方法1:sed -i 's/被替換的內(nèi)容/要替換成的內(nèi)容/' file
方法2:sed 's/被替換的內(nèi)容/要替換成的內(nèi)容/g' file file.out;mv file.out file。
擴(kuò)展資料:
Shell編程的常用技巧:
一、自動補(bǔ)齊:在linux中對于命令或路徑,可以TAB鍵進(jìn)行自動補(bǔ)全,以下事項(xiàng)需要注意:
1、只存在一個(gè)該輸入字符開頭的命令或路徑,此時(shí)自動補(bǔ)全;
2、存在多個(gè)該輸入字符開頭的命令或路徑,此時(shí)第一次點(diǎn)擊TAB鍵無效,此時(shí)再次點(diǎn)擊TAB會羅列出所有該字符開頭的命令或路徑,繼續(xù)輸入直到僅僅剩一個(gè)時(shí)自動補(bǔ)全;
3、如果命令已經(jīng)是完整的,TAB鍵則是本來的移動功能;而路徑的話要看命令自身的行為決定后續(xù)動作。
二、歷史命令
1、history命令可以顯示歷史執(zhí)行過的命令;
2、使用!+序號執(zhí)行該序號對應(yīng)的命令;
3、使用!+字符執(zhí)行該字符開頭的最后一次執(zhí)行的指令。
三、命令別名
1、實(shí)現(xiàn)別名:alias ddd="df -Th";
2、刪除別名:unalias ddd;
3、顯示所有別名命令列表:alias;
4、存放位置:~/.bashrc? (加入該文件后,重啟后不會消失)。
四、重定向
1、重定向標(biāo)準(zhǔn)輸入: 命令接收輸入的途徑由鍵盤改為文件;
2、重定向標(biāo)準(zhǔn)輸出: 將命令的執(zhí)行結(jié)果輸出到指定文件,而不是直接顯示到屏幕;
3、重定向標(biāo)準(zhǔn)輸出: 將命令的執(zhí)行結(jié)果追加輸出到指定文件;
4、重定向標(biāo)準(zhǔn)錯(cuò)誤:2 清除指定文件的內(nèi)容,并把標(biāo)準(zhǔn)錯(cuò)誤信息保存到指定文件;
5、重定向標(biāo)準(zhǔn)錯(cuò)誤:2 標(biāo)準(zhǔn)錯(cuò)誤信息追加到指定文件;
6、重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤:? 將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤信息全部保存到指定文件,而不是直接顯示在屏幕上。
網(wǎng)站標(biāo)題:linux替換內(nèi)容命令 linux替換文件內(nèi)容命令
分享地址:http://sd-ha.com/article4/hiegoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、軟件開發(fā)、定制網(wǎng)站、建站公司、小程序開發(fā)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)