文本處理工具和正則表達式:
文本查看工具:
1,less,more 查看命令的執行的結果。區別在於less查看命令的執行結果,可以向上和向
下翻頁,而more僅可以向下翻頁
2,head 從文件的開始查看內容,默認是顯示10行
3,tail 從文件尾部查看內容,默認是顯示10行
4,cut 截取命令的執行結果,不過cut屬於列截取
5,rev 倒置命令的顯示結果
6,tac,cat 查看文件內容
分析文本工具:
1,sort
sort是對文本中的內容進行排序,它的排序的速度比其他命令的速度要快
sort:
-t 可以指定分割符
-k 指定排序的是哪一行
2,uniq
uniq是對文本中出現的同樣信息的次數進行排序,不過它只能夠對於相鄰的內容進行排
序,所以在使用之前要先用sort進行處理後在排序
uniq:
-c: 顯示每行重複出現的次數
-d: 僅顯示重複過的行
-u: 僅顯示不曾重複的行
3,wc
wc是對文本的行,字節數,字符數進行統計的工具
比較文本的異同的工具(給文本打補丁):
1,diff:比較兩個文件之間的不同
diff -u foo.conf foo2.conf > foo.patch(可將補丁重定向到一個文件之中,方便後續使用)
2,patch:複製在其它文件中進行的改變
patch -b foo.conf foo.patch (向文件打補丁,並備份改變了的文件)
linux文本處理三劍客之一:
grep:用來搜索文件中所匹配的字符串,默認會打印出匹配的行,可使用正則表達式來過
濾
正則表達式:
基本正則表達式(BRE):
字符匹配: . 匹配任意單個字符
[] 匹配指定範圍內的任意單個字符,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定範圍外的任意單個字符 [:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母
[:upper:] 大寫字母
[:blank:] 空白字符(空格和製表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的範圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符 [:print:] 可打印字符
[:punct:] 標點符號
匹配字數:
* 匹配前面的字符任意次,包括0次 貪婪模式:儘可能長的匹配
.* 任意長度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
位置錨定:
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<PATTERN\> 匹配整個單詞
分組:\(\) 將一個或多個字符捆綁在一起,當作一個整體處理,如:\(root\)\+
分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些 變量的命
名方式爲: \1, \2, \3, ... \1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所
匹配到的字符
示例: \(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
後向引用:
引用前面的分組括號中的模式所匹配字符,而非模式本身
擴展正則表示式:
字符匹配:
. 任意單個字符
[] 指定範圍的字符
[^] 不在指定範圍的字符
次數匹配:
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{m} 匹配m次
{m,n} 至少m,至多n次
位置錨定:
^ 行首
$ 行尾
\<, \b 語首
\>, \b 語尾
分組:
()
後向引用:\1, \2, ...
vim編輯器(vi編輯器的升級版):
三種模式:
1,命令模式,可以執行vim中的命令
2,插入模式,在此模式下可以輸入文本
3,擴展命令,保存,退出等
配置文件:
全局配置文件:/etc/vimrc
個人配置文件:~/.vimrc
Esc鍵 退出當前模式
Esc鍵 總是返回到命令模式
命令模式 --> 插入模式
i insert, 在光標所在處輸入
I 在當前光標所在行的行首輸入
a append, 在光標所在處後面輸入
A 在當前光標所在行的行尾輸入
o 在當前光標所在行的下方打開一個新行
O 在當前光標所在行的上方打開一個新行
插入模式 --------> 命令模式
命令模式 --------> 擴展命令模式
擴展命令模式 --------> 命令模式
擴展命令模式:
:q 退出 :q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出
命令模式
ZZ 保存退出
ZQ 不保存退出
擴展命令模式:
按“:”進入Ex模式
創建一個命令提示符: 處於底部的屏幕左側
常見命令
w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 執行命令
r!command 讀入命令的輸出
命令模式光標跳轉:
行首行尾跳轉:
^ 跳轉至行首的第一個非空白字符
0 跳轉至行首
$ 跳轉至行尾
行間移動:
#G 或者擴展命令模式下:# 跳轉至由第#行
G 最後一行
1G, gg 第一行
句間移動:
) 下一句
( 上一句
段落間移動:
} 下一段
{ 上一段
命令模式翻屏操作:
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
命令模式操作:
yy:複製一行
dd: 刪除一行(剪切)
x:刪除一個字符
p:粘貼一行
v:選中一個或多個字符
命令模式查找:
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
命令模式撤銷更改:
Ctrl - r 重做最後的“撤消”更改
Ctrl - u 撤銷操作
命令模式調用系統命令:
!CMD 可不用退出調用系統命令
打開多個窗口編輯:
vim -o file1 file2 橫向打開
vim -O file1 file2 縱向打開
ctrl w 切換窗口