處理文本工具sed及vim文本編輯工具
Sed:
sed是一種在線編輯器、行編輯器,一次處理一行內容。在處理時,把當前處理的行存儲在臨時緩沖區中,該緩沖區稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完畢后,把緩沖區的內容送到標準輸出;然后緊接著處理下一行,重復完成相同的操作,直到文件末尾;sed處理的整個過程中,對象文件中的內容沒有被改變,除非使用重定向來存儲處理后的結果。sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作過程。
功能:數據的替換、刪除、新增等,這里的數據可以是一些關鍵字,也可以是一些特定的行。
語法結構:
sed [OPTION]…{script}[input-file]…[actions]
-n:靜默模式
-e:多點編輯
-f /PATH/TO/SCRIPT_FILE:從指定文件中讀取腳本并運行
-r:支持擴展正則表達式
-i: 直接修改源文件
Sed的地址定界
#:表示數字,指定行
$:最后一行
#,#:從#行開始到#行
#,+#:從#行開始,到加#行
1~2:奇數行
2~2:偶數行
編輯命令:
d:刪除模式空間匹配的行
p:顯示模式空間中的內容
a \text:在行后面追加文本;支持使用\n 實現多行追加
i \text:在行前面插入文本;支持使用\n 實現多行插入
c \text:用text替換匹配到的行
w /path/to/somefile:保存模式匹配的行至指定文件
r /path/from/somefile:讀取指定文件的文本至模式空間中匹配到的行后合并
=:為模式空間中的行打印行號
!: 模式空間中匹配行取反處理
s/regexp/replacement/:替換由regexp所匹配到的內容為replacement,對于替換有兩個后選項:g:全局替換
i:不區分大小寫
p:顯示替換成功的行
高級編輯命令:
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g:從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行至模式空間
N:追加匹配到的行的下一行至模式空間,追加在模式空間中原有內容的后面–
d: 刪除模式空間中的行
D :刪除多行模式空間中的首行
例 1. 在特定行號后插入一行
要在第25行以后插入一行新的內容xiaoming(插入內容將變成第26行),寫法:
# sed -i '25axiaoming' aaa.txt
# sed -i '25a\xiaoming' aaa.txt 沒有特殊字符時,加與不加轉義符,效果都一樣
要在第25行插入一行新的內容 /usr/local/php.ini,寫法:
# sed -i '25a/usr/local/php.ini' aaa.txt 需要加入轉義符
2. 徹底替換某一行內容
要把第3行的內容徹底替換為xiaoming*,寫法:
# sed -i "3s/.*/xiaoming */" /etc/ppp/chap-secrets
vim編輯器:
打開文件 # vim [OPTION]… FILE…
+#: 打開文件后,直接讓光標處于第# 行的行首
+/ PATTERN :打開文件后,直接讓光標處于第一個被PATTERN 匹配到的行的行首
vim + file 直接打開file, 光標在 最后一行
vim -b file 二進制方式打開文件
vim -d file1 file2… 比較多個文件
vim -m file 只讀打開文件
ex file 或 或 vim –e 直接進入ex 模式
如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它
vim :一個模式編輯器
擊鍵行為是依賴于 vim的 的 的“模式”
三種主要模式:
命令模式(默認):移動光標,剪切/ 粘貼文本
插入(編輯)模式:修改文本
擴展命令模式 :保存,退出等
Esc鍵 退出當前模式
Esc鍵Esc鍵 總是返回到命令模式
模式轉換
1. Esc鍵:從輸入模式轉換為編輯模式
2. 從編輯模式–>輸入模式,可使用:
i:在光標所在處的前方轉換為輸入模式
a:在光標所在處的后方轉換為輸入模式
o:在光標所在處的下方新建一個空行并轉換為輸入模式
I:在光標所在行的行首輸入
A:在光標所在行的行尾輸入
O:在光標所在行的上方新建一個空白行
3. 從編輯模式–>擴展模式:直接在窗口輸入冒號(:)即可在窗口的左下方顯示冒號
4. 從擴展模式–>編輯模式:敲擊Esc鍵
5. 鎖定和解鎖:CTRL+s,Ctrl+q
關閉文件
擴展模式:
:q 退出
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出
命令模式
ZZ:保存退出
ZQ:不保存退出
擴展模式
按“: ”進入Ex 模式
創建一個命令提示符:, 處于底部的屏幕左側
w 寫(存)磁盤文件
wq 寫入并退出
x 寫入并退出(不推薦)
q 退出
q!不存盤退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
命令模式的光標跳轉
字符間跳轉:h: 左 l: 右 j: 下 k: 上
#COMMAND :跳轉由# 指定的個數的字符;
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
#COMMAND:由# 指定一次跳轉的單詞數
當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
行首行尾跳轉:
^:跳轉至行首的第一個非空白字符;
0:跳轉至行首
$:跳轉至行尾
行間移動:
#G:直接跳轉至#行
G:最后一行
1G, gg:第一行
句間移動:
) :下一句 ( :上一句
段落間移動:
}:下一段 {:上一段
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Vim的編輯命令
x:刪除光標處的字符;
#x:刪除光標處起始的# 個字符
xp:交換光標所在處的字符及其后面字符的位置
~: 轉換大小寫
r:替換光標所在處的字符
R:切換成REPLACE 模式
d:刪除命令,可結合光標跳轉字符,刪除跳轉范圍內的字符
d$:刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
#COMMAND
dd:刪除光標所在的行
#dd :多行刪除
D:從當前光標位置一直刪除到行尾,留空行,等同于d$
y: 復制,行為相似于d 命令
y$ y0 y^ ye yw yb同上
#COMMAND
Y :yy:復制行
#yy: 復制多行
p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
c:修改后切換成插入模式
命令模式 –> 插入模式
w b e $ 0 ^
所謂修改就是先刪除,再轉換為輸入模式
cc:刪除當前行并輸入新內容
C:刪除當前光標到行尾,并切換成插入模式
原創文章,作者:Dadi,如若轉載,請注明出處:http://www.www58058.com/32984
文章整體架構清晰,層次分明,如果能理論結合實際會更好哦。