作用:
sed是Linux系統文本處理工具中的三劍客之一,它是一種流編輯器,以行為單位,能夠使用正則表達式;跟其他文本處理工具模式相同,不對原文件直接操作,而是先借用一個臨 時的數據緩沖區存放文文本數據,同時還有一個自己獨特的空間"pattern space",我們稱之為sed的模式空間,它的處理流程是:
(1)首先是逐行讀取文本,放到模式空間中;
(2)判斷模式空間是否被sed模式匹配到到:
(3)如果能夠被sed模式匹配到要執行sed編輯命令,默認把結果輸出到標準輸出(stdout);
(4)如果不能夠被sed模式匹配到,默認也把沒有匹配到的內容輸出到stdout;
(5)同時如果不執行-d命令刪除模式空間中的內容時,默認會把模式空間中的內容輸出到stdout
語法格式:
sed [options]…'script' [input-file]…
script:是sed模式匹配條件,也叫sed腳本,由地址定界和編輯命令組成;
(1)地址定界:指的是要操作的文本行范圍;
(2)編輯命令:指的是要對匹配到的文本范圍執行什么樣編輯命令;
常見選項:[option
-n :不輸出模式空間的內容到stdout;sed默認是要把模式空間中的內容輸出到stdut;
-e 'script' :可以指定多個匹配模式條件,實現多點編輯;
-f script-file :可以把匹配模式條件寫到文件中,直接引用文件讀??;
-r :支持使用擴展正則表達式,模式使用基本正則表達式;
-i :直接對原文件執行編輯修改,操作非常危險,可以-i.bak,可以同時先備份以原文件跟.bak結尾的文件;
地址定界分類:
(1)空地址:
以全文匹配處理;
(2)單地址:
# :指定行號;
/pattern/ :被模式匹配到的所有行;
(3)范圍地址:
#,# :指定以前一個#開頭的行到后一個以#結束的行所有行;
#,+# :指定以第#開始的行在跟#個行,5,+5:表示從第五行開始在跟5行,總共匹配 11 行,包括指定開始的行;
#,/pattern/ :指定從#開頭,到第一個被/pattern/匹配到的中間所有行;
/pattern1/,/pattern2/ :從第一個被/pattern1/匹配到的行開始到第一被/pattern2/匹配到的行結束中間的所有行;
(4)步進地址:
1~2:指定所有奇數行;
2-2:指定所有偶數行;
編輯命令:
d :刪除地址定界指定的行
p :打印模式空間中的行輸出到stdout;一般結合選項-n,效果看起來有變化;
a\string :在匹配到的地址定界行下面添加string內容,內容中使用"\n",可以實現換行;
i\string :在匹配到的地址定界行上面添加string內容,使用"\n"實現換行;
c\string :把匹配到的地址定界行替換成新行string內容;
s///或者s@@@ :在指定的地址定界中搜索指定字符并替換;其中替換標記如下
g:行內全局替換;
w /path/file :將替換成功的結果保存至指定文件中;
p:顯示替換成功的行;
r /path/file :讀入其他文件的行到指定的地址定界中;
w /path/file :保存模式空間中匹配到的行至指定文件;
= :為模式空間中匹配到的行打印行號;
!:條件取反;格式:地址定界!編輯命令;
sed高級使用:sed除了有一個模式空間以外,還有一個空間叫hold space保持空間;通過命令實現模式空間與保持空間中的行來回操作,達到特定編輯功能;
sed高級編輯命令:
h :把模式空間中的內容覆蓋到保持空間中;
H :把模式空間中的內容追加到保持空間中;
g :把保持空間中的內容覆蓋到模式空間中;
G :把保持空間中的內容追加到模式空間中;
x :兩個空間內容置換;
n :讀取匹配到的行的下一行到模式空間中,匹配到行會被覆蓋;
N :讀取匹配到的行的下一行追加到模式空間中;匹配到行不會被覆蓋;
d :刪除模式空間中的行;
D :刪除多行模式空間中的所有行;
vi編輯器:
它是一款強大的文本編輯工具,用在命令行模式下,其中vim是vi的升級版本,功能更加完善,其中的對系統配置定義的語法高亮檢查很是實用;熟練掌握使用后,對系統管理維護工作中對文本的操作效率非常高,所有平時要注意多練習,而且vimtutor命令可以引導練習在里面操作;
1.vi模式:
編輯器也跟其他模式化文本處理工具一樣,不是直接對原文件進行修改操作,先把文本數據讀取到自己的vi工作空間中;其實vi有三個模式,不同模式實現的功能不同;下面介 紹:
(1)編輯模式:默認打開文件后進入編輯模式,在這里可以實現復制刪除替換查找等命令;
(2)輸入模式:在這里可以直接對文本進行編輯寫等操作;
(3)末行模式:在這里可以使用末行模式命令對文本進去處理操作;
2.vi模式切換:
(1)編輯模式–>輸入模式
i:在當前光標所在字符的前面轉換為輸入模式;
I:在當前光標所在行的行首轉換為輸入模式;
a:在當前光標所在字符的后面轉換為輸入模式;
A:在當前光標所在行的行尾轉換為輸入模式;
o:在當前光標所在行的下方插入一個新行轉換為輸入模式;
O:在當前光標所在行的上方插入一個新行轉換為輸入模式;
(2)輸入模式–>編輯模式
ESC按鍵;
(3)編輯模式–>末行模式
輸入冒號:
(4)末行模式–>編輯模式
ESC按鍵,快速切換可以按兩下ESC按鍵;
3.打開文件:
語法格式
vim [options] [file ..]
vi + :打開定位文件最后一行
vi +[num] :打開文件定位到指定行
vi +/pattern :打開文件定位到第一次被模式匹配到的行;
file:注意如果實現沒有這個文件,就創建這個文件為新文件,不能跟目錄同名;
4.關閉文件:
(1)末行模式關閉文件
:q 退出
:q! 強制退出不保存;
:w 保存;
:w! 強制保存;
:wq 保存并退出;
:x 保存并退出;
(2)編輯模式下退出
ZZ 保存并退出;
5.在編輯模式中移動光標:
(1)逐字符移動:
h <– 向左
l –> 向右
j v 向上
k ^ 向下
注意:可以[num]h,l,j,k,指定移動多少個字符;
^
k
< h l >
j
v
(2)以單詞為單位移動
w: 移至下一個單詞的詞首
e: 跳至當前或下一個單詞的詞尾
b: 跳至當前或前一個單詞的詞首
注意:可以[num]w,e,b,跟移動多少個單詞
(3)行內跳轉:
0: 絕對行首
^: 行首的第一個非空白字符
$: 絕對行尾
(4)行間跳轉
gg:跳至第一行;
G:跳至最后一行;
[num]G:跳至指定行;
(5)末行模式 [num] 直接給定行號
(6)在編輯模式下翻屏
Ctrl+f: 向下翻一屏
Ctrl+d: 向下翻半屏
Ctrl+b: 向上翻一屏
Ctrl+u: 向上翻半屏
6.編輯模式下刪除
(1)刪除單個字符;
x:刪除光標所在處的單個字符;
[num]x:指定向光標所在到向后的指定個字符;
(2)刪除命令d
dd:刪除當前光標所在整行
d0:刪除當前光標其前到當前行首的所有字符;
d$:刪除當前光標其后到當前行尾的所有字符;
dw:刪除當前光標所在的單詞;
[num]dw:刪除當前光標向后的指定單詞個數;
de:刪除當前光標所在的單詞包括所在其后的單詞;
[num]de:刪除當前光標所在的單詞包括其后指定單詞的個數;
db:刪除當前光標所在其前的單詞;
[num]db:刪除當前光標其前指定的單詞個數;
7.末行模式刪除操作:
:startADD,endADDd
. 表示當前行
$ 表示最后一行;
+[num] 表示從當前向下指定的行數;
8.編輯模式下黏貼命令p
p: 如果刪除或復制為整行內容,則粘貼至光標所在行的下方,如果復制或刪除的內容為非整行,
則粘貼至光標所在字符的后面;
P: 如果刪除或復制為整行內容,則粘貼至光標所在行的上方,如果復制或刪除的內容為非整行,
則粘貼至光標所在字符的前面;
9.編輯模式下復制命令y
yy:復制當前光標所在整行
y0:復制當前光標其前到當前行首的所有字符;
y$:復制當前光標其后到當前行尾的所有字符;
yw:復制當前光標所在的單詞;
[num]yw:復制當前光標向后的指定單詞個數;
ye:復制當前光標所在的單詞包括所在其后的單詞;
[num]ye:復制當前光標所在的單詞包括其后指定單詞的個數;
yb:復制當前光標所在其前的單詞;
[num]yb:復制當前光標其前指定的單詞個數;
10.編輯模式下修改命令c:先刪除內容,再轉換為輸入模式
cc:刪除當前光標所在整行;進入輸入模式
c0:刪除當前光標其前到當前行首的所有字符;進入輸入模式
c$:刪除當前光標其后到當前行尾的所有字符;進入輸入模式
cw:刪除當前光標所在的單詞;進入輸入模式
[num]cw:刪除當前光標向后的指定單詞個數;進入輸入模式
ce:刪除當前光標所在的單詞包括所在其后的單詞;進入輸入模式
[num]ce:刪除當前光標所在的單詞包括其后指定單詞的個數;進入輸入模式
cb:刪除當前光標所在其前的單詞;進入輸入模式
[num]cb:刪除當前光標其前指定的單詞個數;進入輸入模式
11.編輯模式下替換命令r
r:替換單個字符;
R:替換單個單詞替換后進入輸入模式
12.編輯模式下撤銷命令u
u:撤銷前一次編輯操作;
連續uu可撤銷此前多次編輯操作
#u:撤銷最近#次編輯操作;
13.編輯模式下重復前一次操作命令.
. 重復前一次編輯操作;
14.可視化光標選取模式:
v:逐字符選取;
V:矩形選??;
15.末行式下查找
/pattern 從當前光標所在處向下查找
n 對查找到的內容向下跳轉
N 對查找到的內榮向上跳轉;
?pattern 從當前光標所在處向上查找;
N 對查找到的內容向下跳轉
n 對查找到的內榮向上跳轉;
16.查找并替換在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi
$:最后一行
%:表示全文
.:表示當前行
$:表示最后一行;
#:指定行
+[num] 表示從當前向下指定的行數;
修飾符;
g:全局替換
i:忽略大小寫;
17.使用vim編輯多個文件
vim FILE1 FILE2 FILE3
:next 切換至下一個文件
:prev 切換至前一個文件
:last 切換至最后一個文件
:first 切換至第一個文件
:qa 部退出
18.屏顯拆分
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口
在窗口間切換光標:
Ctrl+w, hljk
:qa 關閉所有窗口
19.分窗口編輯多個文件
vim -o : 水平分割顯示
vim -O : 垂直分割顯示
20.末行模式下使用w命令:
將當前文件中部分內容另存為另外一個文件;
:w
:ADDR1,ADDR2w /path/to/somewhere
21.末行模式下使用r命令:
將另外一個文件的內容填充在當前文件中
:r /path/to/somefile
22.跟shell交互
:! COMMAND
23.高級功能
1、顯示或取消顯示行號
顯示:set nu
取消:set nonu
2.顯示忽略或區分字符大小寫
顯示:set ignorecase
取消:set noic
3.設定自動縮進
開啟:set autoindent
:set ai
關閉:set noai
4.查找到的文本高亮顯示或取消
顯示:set hlsearch
取消:set nohlsearch
5.語法高亮
顯示:syntax on
關閉:syntax off
24.配置文件
/etc/vimrc:定義全局配置文件,對所有用戶生效;
~/.vimrc :定義用戶個人配置文件,只對單用戶生效;
原創文章,作者:xiashixiang,如若轉載,請注明出處:http://www.www58058.com/32841