正則表達式及grep、sed、awk、cut、sort、uniq工具

1.正則表達式

(1)定義:規定一些特殊語法用來對字符串進行模糊匹配;
(2)特點:
①靈活性、邏輯性和功能性較強;
②可以迅速地用簡單的方式匹配字符串;
(3)使用事項:當正則表達式作爲命令參數時,要用單引號括起來,因爲正則表達式中的某些字符在shell中有特殊意義,如轉義字符\,括起來後把原封不動地傳遞給命令。

2.字符的分類
(1)字符類
這裏寫圖片描述

(2)數量限定符
這裏寫圖片描述

(3)位置限定符
這裏寫圖片描述

(4)其他字符
這裏寫圖片描述

3.grep工具

grep:行過濾工具,會將文本中符合條件的行直接提取出來,它支持正則表達式。
命令選項:

  • -E 表示擴展正則語法,某些字符表示特殊含義時,不需要進行轉義,也可以直接使用egrep;
  • -i 忽略大小寫
  • -R 遞歸式查找
  • -v 顯示不符合條件的行
  • -q 安靜模式匹配,無論是否匹配到都不顯示,可以根據退出碼判斷是否匹配到;

4.標準正則語法和擴展正則語法的區別

標準正則語法和擴展正則語法的大部分規則相同,但對於一些有特殊含義的字符,如? + { } | ( )標準正則語法會將這些字符解釋爲普通字符,使用正則表達式時,必須對這些字符加 \ 進行轉義

5.grep和正則表達式結合的例子
給出一個file文件,包含一些與QQ郵箱,電話號碼,IP地址,163郵箱類似的字符串,如圖所示:
這裏寫圖片描述

按要求進行匹配,並使用- -color進行高亮顯示
(1)匹配出QQ郵箱
這裏寫圖片描述

(2)匹配出電話號碼
這裏寫圖片描述

(3)匹配出ip地址
這裏寫圖片描述

(4)匹配出163郵箱
這裏寫圖片描述

6.sed工具

sed:流式編輯器
(1) 命令格式: sed ‘/pattern/action’ file

  • pattern表示每讀取一行進行正則匹配
  • action表示進行相應的動作,命令

(2)命令選項

  • -i 將處理結果寫入原文件
  • -n 只顯示匹配的結果
  • -e 對模式空間的一行內容一次應用多種規則、動作

(3)action的命令選項
/pattern/p 打印匹配的行
/pattern/d 刪除匹配的行
/pattern/s/p1/p2/ 查找符合條件的行,用p2替換該行第一個匹配p1的字符串
/pattern/s/p1/p2/g 查找符合條件的行,用p2替換該行所有匹配p1的字符串

(4)例子:
①註釋文件中以printf開頭的行
這裏寫圖片描述

②去掉printf前的註釋
這裏寫圖片描述

③在file文件中以a2開頭並且後面只有2的字符串中,將2替換爲~2~
0

(5)sed的模式空間和保持空間

模式空間:數據可以直接處理;
保持空間:在進行數據處理時,作爲數據的暫存區域;

一般情況下,只使用模式空間,對數據的加工處理只能在模式空間,而保持空間只是保存數據,不做任何處理;

命令:

  • g :將保持空間的內容拷貝至模式空間;
  • G:將保持空間的內容追加至模式空間;
  • h :將模式空間的內容拷貝至保持空間;
  • h :將模式空間的內容追加至保持空間;
  • d :刪除所有行,並讀入下一行到模式空間
  • D :刪除當前行,不讀入下一行
  • x :交換保持空間和模式空間的內容
  • n :將下一行讀取到模式空間
  • N:將下一行添加到模式空間

舉例:
①打印1~100相加之和
這裏寫圖片描述

②給每行結尾添加空行顯示
這裏寫圖片描述

③逆序打印文件
這裏寫圖片描述

④在一個文件結尾追加以hello開頭的所有行
這裏寫圖片描述

⑤將一列數轉換爲一行數顯示
這裏寫圖片描述

⑥打印奇偶數行
這裏寫圖片描述

7.awk工具

(1)
awk可通過指定列或指定域處理數據;
awk將一行內容稱爲一條記錄,將用指定分隔符分隔的列稱爲域;
awk一般以空格作爲域分隔符,以\n作爲記錄分隔符;
awk也可以使用BEGIN和END進行匹配;

(2) 命令格式:
awk ‘/pattern/{action}’ file
awk ‘condition{action}’ file

(3)命令參數:
$0:表示當前整個行
$1:表示第一列  $2:表示第二列
$NF:最後一列  $(NF-1) :倒數第二列
 
(4)例子:
①打印file4文件中的第二列
這裏寫圖片描述

②打印以productA開頭的行的第二列
這裏寫圖片描述
 
③產品價格大於50時,打印產品名和YES,產品價格小於50時,打印產品名和NO:
這裏寫圖片描述

這裏寫圖片描述
 
⑤計算1~100相加之和
這裏寫圖片描述

(5)awk腳本
 腳本第一行#!usr/bin/bah -f
①執行腳本 
./test.awk file
②若腳本第一行沒有寫-f,執行時應該爲awk -f test.awk file
 
(6)awk內置變量
OFS:輸出域分隔符
FS:設置輸出域分隔符

(7)-F 指明域分隔符
這裏寫圖片描述

8.cut工具
切割數據

這裏寫圖片描述 


這裏寫圖片描述

9.sort工具
sort file 按升序輸出
sort -r file 按降序輸出
sort -u file 去掉重複的行
sort -r file -o file 將降序排好的文件寫會原文件
sort -n file 將字符按數值排序,默認升序
sort -k 2 file 將第二列進行排序

10.uniq工具
sort file | uniq 去掉重複的行
sort file | uniq -c 去掉重複的行並顯示重複次數
sort file | uniq -u 顯示出現一次的行
sort file | uniq -d 顯示出現多次的行

例子:行轉換爲列顯示,去掉重複的行,顯示重複次數,並且按升序打印
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章