【Linux】正規表示式
基礎正規表示式,通過grep選取字串
1、“ 特定字串
例:`the`
2、[] 集合字元
例:t[ea]st,test或tast;1o,o之前的字元不能為g;[0-9],任意數字字串
3、$ 行尾 ^ 行首【^在字符集合符號([])之內表示反向選擇,之外表示行首】
例:^the 一行以the開頭;.$,表示一行以.號結束
4、. 任意一個字元【絕對有一個任意字元】
例:g.d,g和d之前有一個任意字元;g..d,g和d之前有兩個任意字元
5、* 重複字元【重複0或多個前一個重複字元】
例:o,擁有空字元或一個o以上的字元;ooo,至少兩個o以上的字串;g.*g,開頭結尾都是g的字串
6、{} 限定連續重複字元範圍,{n,m}連續重複n到m個前一個字元,【{在shell中的特殊意義,所以需要使用轉義】
例:o{2},兩個o的字串,看似與ooo*差不多
正規表示式中的符號與萬用字元意義是不一樣的,萬用字元*表示任意字元(0到多個),萬用字元中的反向選擇為[!a],而正則表示式為2
擴充套件正規表示式,egrep支援擴充套件正規表示式
1、+ 重複一個或一個以上的字元
例:go+g,以g開頭結尾,中間有一個或以上的o的字串
2、? 0個或一個字元
例:go?d,gd或god
3、| 用或(or)的方式找出數個字串
例:gd|good|goooood,或的關係
4、() 找出組字串
例:g(la|oo|re)d,glad或good或gred;x(abc)+x,以x開頭結尾,中間有多個abc的字串
printf 格式化顯示
語法:printf ‘列印格式’實際內容
a 警告聲音輸出
b 退格鍵(backspace)
f 清除螢幕(from feed)
n 輸出新的一行
r 換行,即enter按鍵
t 水平的[tab]按鍵
v 垂直的[tab]按鍵
xNN NN為兩位數的數字,可以轉換數字成為字元【x45 輸出E】
%ns n為數字,s代表string,即n個字元。
%ni n為數字,i代表integer,即多少個整數數字
%N.nf f代表floating,有小數位數,小數點後保留n位,整個浮點數佔N位,多餘的空格在數的前面
sed 分析標準輸入的資料,然後將資料經過處理後,再將它輸出到標準輸出。
語法: sed [-nefr] [動作]
-n 使用安靜模式,在一般sed的用法中,所有來自STDIN的資料一般都會顯示在螢幕上,但如果加上-n引數,則只有經過sed的特殊處理的那一行才會顯示出來
-e 直接在命令列模式上進行sed的操作編輯
-f 直接將sed的操作寫在一個檔案內,-f filename 則可以執行filename內的sed操作
-r sed的操作支援的是擴充套件正規表示式的語法(預設為基礎表示式語法)
[n1[,n2]]function
n1,n2 不一定存在,一般代表“選擇進行操作的行數”
function一般有以下操作,務必用’’兩個單引號括住:
a 新增,a後面可以接字串,這些字串出現在當前的下一行
c 替換,c後面可以接字串,這些字串可以替換n1,n2之間的行
d 刪除,d後面通常不接任何內容
i 插入,i後面可以接字串,這些字串出現在當前的上一行
P 列印,列印某個選擇的資料,通常會和-n一起運用
s 搜尋,不但可以搜尋,還可以替換,通常與正規表示式一起執行【1,20s/old/new/g】
如果新增的不只一行,每行之間以反斜線來進行新行的增加
注:sed後面有超過一個以上的操作時,每個操作前需要加上-e
awk 相比常作用於整行處理的sed而言,awk傾向於一行中分成數個“欄位”來處理,awk適合處理小型的資料。
語法:awk ‘條件型別1{動作1} 條件型別2{動作2}…’ filename
例:last 取出所有登入者資訊
1、last | awk `{print $1 ” ” $3}`
$1,$3分別表示第一欄和第三欄,$0表示一整行資料
2、last | awk `{print $1 “t lines:” NR “t columes:” NF}`
NF 每一行($0)擁有的欄位總數,NR 當前awk所處理的是“第幾行”資料,FS 當前的分隔符,預設為空格鍵。
3、last | awk `{FS=”:”} NR < 4 {print $1 ” ” $3}`
last | awk `BEGIN{FS=”:”} NR < 4 {print $1 ” ” $3}`
運用awk進行計算時,BEGIN表示預先設定awk變數,第一條命令的輸出結果的第一行的分隔符不是:,第二條命令從第一行起分隔符便就是:
注意:awk後續的所有操作用’括住,所以如果想以print顯示,記住,非變數的文字部分,包括printf的格式中,都需要使用雙引號來定義
(1) 所有的操作即在{}內的操作,如果需要多個命令時,可使用分號分割,或者直接以enter按鍵來隔開每個命令。
(2) 格式化輸出時,printf的格式設定中,務必加上n才能分行
(3) 與bash的變數不同,在awk中,變數可以直接使用,不需要加上$符號
檔案比較
1、diff 一般用於ASCII純文字檔案或目錄的比較
語法:diff [-bBi] fromfile tofile
-b 忽略一行中的多個空白的差異
-B 忽略空白行的不同
-i 忽略大小寫的不同
例:diff -b “about me” “me”
2、cmp 主要用“位”為單位比較
語法:cmp [-s] oldfile newfile
-s 將所有不同點的位都列出來,因為cmp預設僅會輸出第一個發現的不同點
相關文章
- Linux 的正規表示式Linux
- Linux正規表示式詳解Linux
- Linux中基本正規表示式Linux
- 正規表示式
- 正規表示式.
- Linux之grep中的正規表示式Linux
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- php –正規表示式PHP
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()
- 正規表示式(?!)作用
- 正規表示式 {n,}
- SQL正規表示式SQL
- 正規表示式(java)Java
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- java正規表示式Java
- Shell正規表示式
- 常用正規表示式
- 正規表示式合集
- python正規表示式Python
- 【java】正規表示式Java
- MySQL正規表示式MySql
- JavaScript 正規表示式JavaScript
- 正規表示式 教程
- Python 正規表示式Python
- 正規表示式(一)
- Python:正規表示式Python
- 正規表示式匹配
- 正規表示式 【四】
- 正規表示式基本規則
- “正規表示式”應當稱為“規則表示式”
- 正規表示式同時匹配中英文及常用正規表示式