sed工具:
用法:
sed [option]… 'script' inputfile…
常用選項:
-n:不輸出模式空間內容的自動打印,只輸出處理行的結果
-e: 多點編輯
-f : / PATH/TO/SCRIPT_FILE : 從指定文件中讀取編輯腳本
-r: 支持使用擴展正則表達式
-i: 原處編輯,可以直接修改文件 ; -i.bak:備份文件再修改,安全
script: ' 地址,命令'
地址界定:
*如果沒有明確表明地址,則對全文進行處理
*單地址:
#:指定的行 /pattern/被此模式所能匹配到的每一行進行處理
*地址范圍:
#,#:表示第#行到第#行
#,+#:表示第#行,和之后的#行
/pat1/,/pat2/:從匹配到的/pat1/行開始,到/pat2/的行 之間的行 #,/pat1/:從第#行開始,到匹配到/pat1/的行 之間的行
* ~:步進
1~2:奇數行
2~2:偶數行
編輯命令:
d:刪除模式空間匹配的行
p:顯示模式空間中的內容
顯示第三行, -n表示不顯示默認輸出的結果,只顯示第3行的匹配結果
a \text:在行后面追加文本;支持使用\n 實現多行追加
i \text:在行前面插入文本;支持使用\n 實現多行插入
c \text:替換行為單行或多行文本
w /path/to/somefile: 保存模式匹配的行至指定文件
r /path/from/somefile:讀取指定文件的文本至模式空間中匹配到的行后
=: 為模式空間中的行打印行號
!:模式空間中匹配結果取反處理
如果不加?。篺2文件中1到3行加上行號 加上!結果取反,1到3行不加,其他行加
s/// :查找替換, 支持使用其它分隔符,s@@@ ,s###
替換標記:
g: 行內全局替換
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE :將替換成功的行保存至文件中
這里沒有加g,所以是匹配到的有good的行的第一個字符進行替換,加上g的話,就是行內所有的匹配到的字符全部替換:
[root@localhost ~]# cat f1 good good good goodgood goood [root@localhost ~]# sed "s/good/god/" f1 god good good godgood goood [root@localhost ~]# sed -n "s/good/god/gp" f1 god god god godgod
只顯示替換成功的行
&符號表示前面的搜索結果,比如在這里就表示的是,把root替換成rootsuperman
&也可以放在后面:/root/superman&/表示把root替換成supermanroot
保持空間: 可暫時存放數據的空間
高級編輯命令:
h: 把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行 覆蓋 至模式空間
N:追加匹配到的行的下一行至模式空間
d: 刪除模式空間中的行
D:刪除當前模式空間開端至\n的內容(不在傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed
vi文本編輯器:
簡介:
vi:Visual Interface,文本編輯器
文本編輯種類:
行編輯器:sed
全屏編輯器:nano,vi
vim – Vi Improved是vi的加強版
其他編輯器:
gedit 一個簡單的圖形編輯器
gvim 一個vim編輯器的圖形版本
打開文件:
命令格式vim [OPTION]… FILE…
+#: 打開文件后,直接讓光標處于第# 行的行首
vi +2 f2
+/ PATTERN :打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
vi +/UUID f2
vim + file 直接打開file, 光標在最后一行
vi + f2
vim –b file 二進制方式打開文件
vim –d file1 file2… 比較多個文件
vi -d f1 f11
vim -m file 只讀打開文件
ex file 或 或 vim –e 直接進入ex模式 如果該文件存在,文件被打開并顯示內容;如果該文件不存在,當編輯后第一次存盤時創建它
vim的三種主要模式:
命令模式(默認):移動光標,剪切、粘貼文本 ,用來查看文件
插入(編輯)模式:修改文本
擴展命令模式:保存,退出等
Esc鍵:退出當前模式 Esc鍵 Esc鍵 總是返回到命令模式
由命令模式–>插入模式:
i: insert, 在光標所在處輸入
I:在當前光標所在行的行首輸入
a: append, 在光標所在處后面輸入
A:在當前光標所在行的行尾輸入
o: 在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行
模式之間的轉換:
插入模式 —-> 命令模式 按ESC鍵
命令模式 —-> 擴展模式 直接輸入: :wq存盤退出; :q沒改文件的情況下退出; :q!更改文件的情況下強行退出,但不保存文件; :x存盤退出=:wq
擴展模式 —-> 命令模式 按ESC鍵
鎖定和解鎖:CTRL+s,Ctrl+q
關閉文件:
擴展模式: 輸入 :wq存盤退出; :q沒改文件的情況下退出; :q!更改文件的情況下強行退出,但不保存文件; :x存盤退出=:wq
命令模式: ZZ:保存退出 ZQ:不保存退出
擴展模式:
按“:” 創建一個命令提示符:,處于底部的屏幕左側,進入Ex模式
命令:
w寫(存)磁盤文件,可以臨時保存,亦可以保存在別的文件
(w filename) 然后繼續編寫
wq寫入并推出=x
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件,臨時保存
:!command,可以執行命令,執行完,回車鍵返回文件編輯
:r!command 直接讀取命令執行結果
命令模式的光標跳轉:
字符間跳轉:
h:左 l:右 j:下 k:上
#COMMAND :跳轉由#指定的個數的字符;例如:10h–向左跳轉10個字符
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
#COMMAND:由#指定一次跳轉的單詞數
當前頁跳轉:
H :頁首 M:頁中間行 L:頁底
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字符;
0: 跳轉至行首
$: 跳轉至行尾
行間移動:
#G(輸入行數+G進行跳轉)、擴展模式:# 跳轉至由#指定行
G:最后一行 1G, gg: 第一行
句間移動:
):下一句 (:上一句 默認以.結束是一句話
段落間移動:
}: 下一段 {:上一段
命令模式翻屏操作:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
命令模式操作:
字符編輯:
x:直接刪除光標處的字符;
#x:刪除從光標出開始的#個字符
xp:交換光標所在處的字符及其后面字符的位 是x,p的組合,
x是剪切,p粘貼
~:轉換大小寫
替換命令(r,replace)
r:替換光標所在處的字符,只能一個
R:切換成REPLACE模式,輸入任意字符替代光標處字符,一直替換,按esc鍵退出REPLACE模式
刪除命令:
d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;
d$: 刪除到行尾
d^: 刪除 到非空行首
d0: 刪除到行首
dw:從光標處刪除到光標所在單詞詞尾
de:從光標處刪除到所在單詞詞尾
db:從光標處刪除到光標所在單詞詞首
dd: 刪除光標所在的行
#dd :多行刪除
D:從當前光標位置一直 刪除到行尾,留空行,等同于d$
復制命令(y, yank):想要粘貼 把光標跳轉至指定位置,按p,在光標之后粘貼,按P,在光標之前粘貼(粘貼命令(p, paste):
p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面)
y:復制,行為相似于d命令
y$:從光標處到行尾復制
y0:從光標處到行首復制
y^:從光標處到行首非空字符復制
ye:從光標處到單詞詞尾復制
yw:從光標處到單詞詞尾復制
yb:從光標處到單詞詞首復制
yy:復制行
#yy:復制多行
Y:復制整行
命令模式 –> 插入模式 c:修改后切換成插入模式
c$:刪除從光標處到行尾的字符,然后自動切換至插入模式
c^:刪除從光標處到行首的非空字符,進入插入模式
c0:刪除從光標處到行首的所有字符,進入插入模式
cb:刪除從光標處到詞首的字符,進入插入模式
ce:刪除從光標處到詞尾的字符,進入插入模式
cw:刪除從光標處到詞尾的字符,進入插入模式
cc :刪除當前行并輸入新內容
#cc:從光標之后的#行刪除并輸入新內容
C:刪除當前光標到行尾,并且換成插入模式
100iquan[Esc] 粘貼“quan”100次
Command:
y復制、d刪除、gU變大寫、gu變小寫
命令將的組合: 0y$:從行首到行尾最后一個字符進行拷貝
ye:從當前位置拷貝光標所在單詞的最后一個字符
擴展模式下的地址界定:
#:從第#開始
#,#: 從第#行到右邊的第#行
#,+#: 從第#行開始到第#+#行結束 如:2,+3 表示2到5行
.: 當前行 $: 最后一行 如:.,$-1 當前行到倒數第二行
%:全文, 相當于1,$
/pat1/,/pat2/:從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/:第#行到第一次被pat匹配到的行
/pat/,$:從第一次被pat匹配到的行到最后一行
使用方式:后跟一個編輯命令
d:刪除
y:復制
w file: 將范圍內的行另存至指定文件中
r file :在指定位置插入指定文件中的所有內容
從第一個行首是任意字符的有by的行首到第一個被匹配到的行首是任意字符的有man的行尾進行復制 到指定位置,在命令模式下按p鍵粘貼,如下圖:
擴展模式下的查找:
/PATTERN :從當前光標所在處向文件尾部查找查找關鍵詞
?PATTERN :從當前光標所在處向文件首部查找
n:與命令同方向跳到下一個關鍵詞
N:與命令反向跳到下一個關鍵詞
擴展模式模式下的查找并替換:
s:在擴展模式下完成查找、替換
格式:s/($、@、#)要查找的內容/替換的內容/修飾符
其中修飾符有:
i:忽略大小寫
g:全局替換; 因為默認模式下,是每行只替換第一個
gc:全局替換,每次替換前詢問
命令的意思:全文搜索/sbin/nologin,并用/bin/bash進行全局替換
替換完成
命令模式 :撤銷修改:
u:撤銷最近的更改
#u:撤銷之前的#次更改
U:撤消光標落在這行后所有此行的更改
:按Ctrl -r重做最后的“撤消”更改
.:重復前一個操作
n.:重復起一個操作n
vim寄存器 只能一個人用
用a ,b,…,z 表示, 用“寄存器表示,放在數字和命令之間
如:3"tyy 表示復制3行到t寄存器中 執行完3“tyy后文件下方會出現:3 lines yanked 字樣,表示已經復制到t寄存器中完畢
"tp 表示將t寄存器內容粘貼 把光標移動到指定位置,執行“tp即可粘貼剛才復制的t寄存器中的內容
如果未指定寄存器名字,將使用無命名寄存器
有10 個數字寄存器,用0 ,1 ,… ,9 表示,0 存放最近復制內容,1 存放最近刪除內容。當新的文本變更和刪除時,1 轉存到2 ,2 轉存到3 ,以此類推。數字寄存器不能在不同會話間共享。
可視化模式:
允許選擇的文本塊:
v面向字符
V面向行
ctrl-v 面向塊
相當于選中范圍
可視化鍵可用于與移動鍵結合使用:w,),},箭頭等
突出顯示的文字可以被刪除,復制,變更,過濾,搜索、替換等
多文件模式:
vim FILE1 FILE2 FILE3 … 同一時間只能看到一個文件
擴展模式下輸入:
:next 下一個
:prev 前一個
:first 第一個
:last 最后一個
:wall 保存所有
:qall 退出所有
:wqall 保存并退出所有
使用多個窗口:
多文件分割 vim -o|-O FILE1 FILE2 …
-o: 水平分割 -O: 垂直分割
在窗口間切換: Ctrl+w,方向鍵 上下左右跳轉
單文件窗口分割:
Ctrl+w,s:水平分割
Ctrl+w,v:垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o: 取消全部窗口
: wqall 退出
定制vim的工作特性:
配置文件:永久有效,修改配置文件
全局:/etc/vimrc
個人:~/.vimrc
在擴展模式下定制特性,只對當前進程有效
行號:
顯示:set number, 簡寫為set nu
取消顯示:set nonumber, 簡寫為set nonu
自動縮進:
啟用:set ai
禁用:set noai
高亮搜索:
啟用:set hlsearch
禁用:set nohlsearch
語法高亮:
啟用:syntax on
禁用:syntax off
忽略字符的大小寫:
啟用:set ic
不忽略:set noic
文件格式
啟用:set fileformat=unix
不忽略:set fileformat=dos
(8) 設置文本寬度 標準長度:一行80字符
:set textwidth=65 (vim only,vi不支持)距離左邊65個字符換行
:set wrapmargin=15距離右邊15個字符換行
如果想要了解更多,請在vi中擴展模式下敲help
原創文章,作者:舊城以西,如若轉載,請注明出處:http://www.www58058.com/31915