>>>文本處理工具<<<
一:文本查看(cat、less、more、head、tail、cut、paste)
cat (常用于顯示內容較少的文本)
功能:查看文件內容,創建文件,文件合并,追加文件內容
選項(options):
①查看文件內容:
-A = -vte 顯示文件所有內容(包括回車[$]和特殊字符)
-n 顯示行編號,空白行也編號 聯想:nl filename 也能顯示文本文件的行號偶
-b 顯示行編號,但對空白行不編號
-e/E 在輸出內容的每一行后加上$(換行符)符號
-s 合并連續空白行
-t/T 顯示tab(^I)
-v 顯示非打印字符串
–version 顯示版本信息并退出
②創建文件并寫入文件內容(與重定向>配合使用):
語法:cat>filename<<endmark
(filename 新創建的文件名
endmark 結束標志,當輸入endmark時自動退出編輯)
③文件合并(與重定向>配合使用)
cat f1 f2>f3 將f1、f2文件內容寫入到f3中(覆蓋f3原有內容)
cat f1 f2>>f3 將f1、f2文件內容寫入到f3中(保留f3原有內容)
④追加文件內容(與重定向>配合使用)
cat>>filename<<endmark
1.功能:
- 逐頁顯示文件內容
- 啟動時就加載整個文件,并能夠搜索字符串和跳行
-n 定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
Ctrl+F : 向下滾動一屏
V 調用vi編輯器
-e 當文件顯示結束后,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g 只標志最后搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示類似more命令的百分比
-N 顯示每行的行號
-o <文件名> 將less 輸出的內容在指定文件中保存起來
-Q 不使用警告音
-s 顯示連續空行為一行
-S 行過長時間將超出部分舍棄
n:重復前一個搜索(與 / 或 ? 有關)
N:反向重復前一個搜索(與 / 或 ? 有關)
b 向后翻一頁
d 向后翻半頁
h 顯示幫助界面
Q 退出less 命令
head
-n 行號 / -行號 顯示前n行
-c 以字節為匹配單位,顯示前n個字節
tail
-n 行號 / -行號 顯示后幾行
日志監控用法:
追加信息到file1文件中
再打開一個終端,利用 tail -f file1 來實時追蹤file1的變化
cut(常與tr一起連用)
截取某行:cut -fn
截取連續幾行:cut -fm-n
eg: cut -d: -f1,3 –output-delimiter=’|’ /etc/passwd 將原有:替換成 |
=
paste 合并文件內容
paste file1 file2
-d 指定分隔符(默認到TAB)
-s 所有行合并成一行顯示(合并單個文件)
二:文本分析工具(wc、sort、diff與patch)
WC (文本數據統計工具)
1.功能:
計算單詞總數、行總數、字節總數、字符總數
※ wc file 圖二所示結果依次是: 行數 單詞數 字節數($、^I等其他隱藏字符也算一個字節偶)
圖一
圖二
2.options:
-l 總行數
-w 單詞總數
-c 字節總數
-m 字符總數
sort(默認升序)
1.options:


① sort -t符號m -kn -n 以符號m為間隔符,取第n列按數字大小對文本進行排序
sort -t: -k3 -n /etc/passwd 根據用戶UID大小對用戶進行默認排序
②與uniq搭配使用,對有分散的重復行文本內容排序,例題:
請對將此字符串:welcome to magedu linux 中的每個字符
去重并排序,重復次數多的排到前面
解題思路: 輸出welcome to magedu linux–>利用grep豎向輸出字母–>sort對字母進行排序(默認升序)–> uniq -c 計算每個連續重復行出現次數(謹記:必須先用sort將分散的重復行變為連續行才能用 uniq -c 進行統計)–>再次利用 sort -rn 將其按照數字大小對其降序排列
echo welcome to magedu linux| grep -o [[:alpha:]]| sort|uniq -c|sort -rn
uniq (將連續重復行顯示為一行)
1.options:
-c 將連續行顯示為一行,并顯示連續行出現的次數(如下圖)
-d 僅顯示連續重復行
-u 僅顯示不連續重復的行
2.常見用法:
與sort配合使用(見sort常見用法②例題)
diff與patch(生成補丁文件并為原始文件打補丁)
※diff (比較兩文件不同)
options:
-u 輸出統一的diff文件(這就是我們常說的補丁文件了?。。?!)
※patch(為原始文件打補丁 謹慎使用)
用法:
patch -b 原始文件 補丁文件 給文件打補丁
>>>正則表達式<<<
一:什么是正則表達式?
正則表達式是通過一些特殊字符的排列,用以查找、替換、刪除一行或多行文字字符串
二:基礎正則表達式(grep)
1、grep 基本正則表達式
①功能:
顯示匹配信息所在行
②options:
-o 只顯示匹配到的行
eg:
-v 只顯示未匹配到的行
-e 或
eg:grep -e “cat” -e “dog” file1 顯示含有cat或dog的行
-w 匹配整個單詞(精確查找)
-c 統計匹配的行數
-n 顯示匹配結果的行號
-q 靜默模式,不顯示匹配結果
-A n 同時顯示匹配到的行與它的后n行
-B n 同時顯示匹配到的行與它的前n行
-C n 同時顯示匹配到的行與它的前后n行
-E =egrep
-F =fgrep
-i 忽略字符大小寫
–color=auto
2、正則表達式中元字符分類
- 字符匹配
- 匹配次數
* |
匹配字符任意次(包括0次,盡可能長的匹配) |
.* |
任意長度的任意字符 |
\? |
0或1次 |
\+ |
>=1次 |
\{n\} |
匹配n次 |
\{m,n\} |
匹配m-n次 |
\{,n\} |
<=n次 |
\{m,\} |
>=m次 |
- 位置錨定
^ 行首錨定
$ 行尾錨定
\< 詞首錨定
\> 詞尾錨定
\< \>
- 分組
① \(string\) 同時匹配多個字符
② 后向引用: \1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
③ \| 邏輯 “或”
3、egrep 拓展的正則表達式
字符匹配 |
. 任意單個字符 |
[] 指定單個字符 |
|
[^] 補集 |
|
次數匹配 |
{n} n次 |
{m,n} m-n次 |
|
* (0,+∞) |
|
? 0或1 |
|
+ 大于等于1 |
|
位置錨定 |
^ 行首 |
$ 行尾 |
|
\< 詞首 |
|
\> 詞尾 |
|
分組 |
() |
\1,\2,\3……. 后向引用前面所匹配的字符串 |
|
或 |
a|b a或b |
C|cat C或cat |
|
(c|C)at Cat或cat |
原創文章,作者:yunyunyu,如若轉載,請注明出處:http://www.www58058.com/83117