本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92461
文本處理工具最全整理上半部
一.抽取文件的工具
1.文件內容查看
cat 按順序輸出文本到屏幕
-A 顯示所有的控制符
-n 顯示行號
-b 非空行編號
-s 壓縮連續的空行成一行
tac : 行倒序查看(最后一行變為第一行顯示)
rev : 列倒序查看(一行內最后一個字符變為第一個字符顯示)
more 分頁顯示文件 Enter鍵翻頁
less 分頁顯示 /文本 搜索文本 n/N 跳到下一個或上一個匹配
2.文件截取
head/tail 顯示文本前或后行內容
-c # 獲取前或后#字節
-n # 獲取前或后#行
tail -f 跟蹤顯示文件新追加內容,常用于日志監控
3.按列抽取
cut -d :指明分割符,默認Tab
-f :# 第#個字段
#,# 離散的多個字段,例如1,3,6
#-# 連續的多個字段,例如1-6
混合使用1-3,7
-c 按字符切割
–output-delimiter=STRING指定輸出分隔符
paste 合并兩個同行號的行到一行
-d 指定分隔符,默認tab
4.按關鍵字抽取
grep
二、分析文本的工具
1.文本數據統計 wc
wc -l 只計數行數
-w 只計數單詞總數
-c 只計數字節總數
-m 字符總數
-L 最長行的長度
2.整理文本 sort
sort -r 執行反方向(由上至下)整理
-n 執行按數字大小整理
-t c 用c作為字段界定符
-k x 與-t一起使用,按照使用c字符分隔的x行整理
-R 隨機排序
uniq 從輸出中刪除前后相接的重復的行,常用于與sort配合使用
-c 顯示每行重復出現的次數
-d 僅顯示重復過的行
-u 僅顯示不曾重復的行 注:連續且完全相同方為重復
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
3.比較文件 diff patch
Example:1.通過ifconfig取網卡eth0的ip地址
ifconfig eth0 | grep ‘inet addr’ |cut -d: -f2 |cut -d’ ‘ -f1
2.取分區利用率
df|tr -s ‘ ‘ ‘%’ |cut -d “%” -f5
3.分析access_log,分析出登陸ip和次數,并按訪問次數從多到少排序
cut -d’ ‘ -f1 access_log | sort | uniq -c | sort -nr
4.按uid排列用戶
sort -t: -k3 -nr /etc/passwd
三、Linux文本處理三劍客
1. grep 文本過濾工具
–color=auto 對匹配到的文本著色顯示
-v 顯示不被匹配到的行
-i 忽略大小寫
-n 顯示匹配的行號
-c 統計匹配的行數
-o 僅顯示匹配到的字符串
-q 不輸出任何信息,配合$?使用
-A # 后#行
-B # 前#行
-C # 前后各#行
-e 同時匹配多個選項。
-w 匹配整個單詞
-E 使用ERE(擴展正則)
-F 相當于fgrep,不支持正則
2.正則表達式
元字符分類
1)字符匹配:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
2) 匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* 匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.* 任意長度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
3)?位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\> 匹配整個單詞
4)分組:\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:
\(root\)\+
?分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這
些變量的命名方式為: \1, \2, \3, …
?\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
?示例: \(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
?后向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身
?或者:\|
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat
3.擴展的正則表達式:
egrep = grep -E
1)字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
2)次數匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
3)位置錨定:
^ :行首
$ :行尾
\<, \b :語首
\>, \b :語尾
4)分組:
()
后向引用:\1, \2, …
?或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat
四、vim簡介
命令模式光標跳轉
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字符
0: 跳轉至行首
$: 跳轉至行尾
行間移動:
#G、擴展模式:# :跳轉至由#指定行
G:最后一行
1G, gg: 第一行
句間移動:
):下一句 (:上一句
段落間移動:
}:下一段 {:上一段
刪除/剪切命令:
d: 刪除命令,可結合光標跳轉字符,實現范圍刪除
d$: 刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:刪除單詞
dd: 刪除光標所在的行
#dd:多行刪除
D:從當前光標位置一直刪除到行尾,留空行,等同于d
u:撤銷最近的更改
使用多個“窗口”
?多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口間切換:Ctrl+w, Arrow
單文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall 退出
贊 (0)
【導師產品】基于 Python3 的開源堡壘機 Jumpserver v1.0正式發布
上一篇
2018-03-15 14:20
文本處理(1)
下一篇
2018-03-15