?
目錄
?文章來源地址http://www.zghlxwxcb.cn/news/detail-651795.html
一、正則表達式
1.2元字符
?1.3表示次數
1.4位置錨定
1.5分組或其他
1.6擴展正則表達式
1.7grep
二、AWK
awk -F
?編輯三、sed
1.sed簡介
2.sed工作流程
3.sed命令格式
3.1打印全部內容
?3.2 查看文件,打印全部內容
?3.3打印指定行內容
3.4支持正則表達式,打印范圍內容?
3.5#,/關鍵字/p’?從第#行開始匹配
?3.6?‘/關鍵字/,#’?找到第#個關鍵字為止?編輯
?3.7打印奇偶數行
3.8刪除指定行?
?3.9?先備份內容再刪除
3.10??在指定行后插入?
?3.11修改全局,后面加g
3.12?查找?guī)c到幾點之間的日志
一、正則表達式
由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能,類似于增強版的通配符功能,但與通配符不同,通配符功能是用來處理文件名,而正則表達式是處理文本內容中字符。
正則表達式被很多程序和開發(fā)語言所廣泛支持:vim, less,grep,sed,awk, nginx,mysql 等
主要用來匹配字符串(命令結果,文本內容),
通配符匹配文件(而且是已存在的文件)
-
基本正則表達式
-
擴展正則表達式
1.2元字符
. ??匹配任意單個字符,可以是一個漢字 ?
[] ??匹配指定范圍內的任意單個字符,示例:[zhou] ??[0-9] ??[] ??[a-zA-Z] ? [:alpha:]
[^] 匹配指定范圍外的任意單個字符,示例:[^zhou] [^a.z] [a.z]
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母,示例:[[:lower:]],相當于[a-z]
[:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、換行符、回車符等各種類型的空白,比[:blank:]包含的范圍
廣
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)
[:digit:] 十進制數字
[:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
\w #匹配單詞構成部分,等價于[_[:alnum:]]
\W #匹配非單詞構成部分,等價于[^_[:alnum:]]
\S ????#匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。
\s ????#匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。注意
Unicode 正則表達式會匹配全角空格符
元字符點(.)
#此處的點代表字符
#點值表示點需要轉義
#r..t ..代表任意兩個字符?
?
?1.3表示次數
* #匹配前面的字符任意次,包括0次,貪婪模式:盡可能長的匹配
.* #任意長度的任意字符,不包括0次
\? #匹配其前面的字符出現0次或1次,即:可有可無
\+ #匹配其前面的字符出現最少1次,即:肯定有且 >=1 次
\{n\} #匹配前面的字符n次
\{m,n\} #匹配前面的字符至少m次,至多n次
\{,n\} ?#匹配前面的字符至多n次,<=n
\{n,\} ?#匹配前面的字符至少n次
ifconfig ens33|grep netmask|grep -o?
1.4位置錨定
^ #行首錨定, 用于模式的最左側
$ #行尾錨定,用于模式的最右側
^PATTERN$ #用于模式匹配整行 (單獨一行 ?只有root)
^$ #空行
^[[:space:]]*$ # ?空白行
\< 或 \b ?? ? ? #詞首錨定,用于單詞模式的左側(連續(xù)的數字,字母,下劃線都算單詞內部)
\> 或 \b ???????#詞尾錨定,用于單詞模式的右側
\<PATTERN\> ????#匹配整個單詞?
?
1.5分組或其他
分組:() 將多個字符捆綁在一起,當作一個整體處理,如:(root)+
后向引用:分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名
方式為: \1, \2, \3, ...
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
?
1.6擴展正則表達式
* ??匹配前面字符任意次
? 0或1次
+ 1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次
{,n} ?#匹配前面的字符至多n次,<=n,n可以為0
{n,} #匹配前面的字符至少n次,<=n,n可以為0?
?表示郵箱:
?表示手機號:
1.7grep
grep [選項]… 查找條件 目標文件
-
-i:查找時忽略大小寫
-
-v:反向查找,輸出與查找條件不相符的行
-
-o 只顯示匹配項
-
-f 對比兩個文件的相同行
-
-c 匹配的行數([root@localhost ky15]# grep -c root passwd 2)
-color=auto 對匹配到的文本著色顯示
-m ?# 匹配#次后停止-v 顯示不被pattern匹配到的行,即取反
-i 忽略字符大小寫
-n 顯示匹配的行號
-c 統(tǒng)計匹配的行數-o 僅顯示匹配到的字符串
-q 靜默模式,不輸出任何信息
-A # after, 后#行?-B # before, 前#行
-C # context, 前后各#行-e 實現多個選項間的邏輯or關系,如:grep –e ‘cat ' -e ‘dog' file
-w 匹配整個單詞?
二、AWK
在 Linux/UNIX 系統(tǒng)中,awk 是一個功能強大的編輯工具,逐行讀取輸入文本,默認以空格或tab鍵作為分隔符作為分隔,并按模式或者條件執(zhí)行編輯命令。而awk比較傾向于將一行分成多個字段然后進行處理。AWK信息的讀入也是逐行
指定的匹配模式進行查找,對符合條件的內容進行格式化輸出或者過濾處理,可以在無交互 的情況下實現相當復雜的文本操作,被廣泛應用于 Shell 腳本,完成各種自動化配置任務。
?#打印root 多少行=passwd里的行數
#分區(qū)利用率
#用冒號分隔開
?#取ip地址
awk -F
?-F “分隔符” 指明輸入時用到的字段分隔符,默認的分隔符是若干個連續(xù)空白符
#? $0代表全部元素
#? $1,$3代表第一第三列
?#? 已root為開頭的行
#? 統(tǒng)計當前已/bin/bash結尾的行?
NR:當前處理行的行號
NR寫在后面則在后面顯示行號
?
?
#?NR%2==0取偶數行
#NR%2==1取奇數行
?#NR==1,NR==4取區(qū)間行?
三、sed
1.sed簡介
-
sed編輯器時一種流編輯器,流編輯器會在編輯器處理數據之前基于預先提供的一組規(guī)則來編輯數據流。
-
sed編輯器可以根據命令來處理數據流中的數據,這些命令要么從命令行中輸入,要存儲在一個命令文本文件中。
2.sed工作流程
- 讀取: sed從輸入流(文件、管道、標準輸入)中讀取一行內容并存儲到臨時的緩沖區(qū)中(又稱模式空間,pattern space )。
- 執(zhí)行:默認情況下,所有的sed 命令都在模式空間中順序地執(zhí)行, 除非指定了行的地址,否則sed命令將會在所有的行上依次執(zhí)行。
- 顯示:發(fā)送修改后的內容到輸出流(屏幕)。在發(fā)送數據后,模式空間將會被清空。在所有的文件內容都被處理完成之前,上.述過程將重復執(zhí)行,直至所有內容被處理完。
3.sed命令格式
-n | 不輸出模式空間內容,即不自動打印,加p恢復自動打印 |
-e | 多點編輯 |
-f | 從指定文件中讀取編輯腳本 |
-r? -E | 使用擴展正則表達式 |
-i | 備份文件并原處編輯 |
操作 | 作用 |
s | 替換,替換指定字符 |
d | 刪除,刪除選定的行 |
a | 增加,在當前行下面增加一行指定內容 |
i | 插入,在選定行上面插入一行指定內容 |
c | 替換,將選定行替換為指定內容 |
Y | 替換,將選定行替換為指定內容 |
p | 打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以ASCII碼輸出。其通常與"-n"選項一起使用。 |
= | 打印行號 |
l(小寫L) | 打印數據流中的文本和不可打印的ASCII字符(比如結束符$、制表符\t) |
3.1打印全部內容
?3.2 查看文件,打印全部內容
?3.3打印指定行內容
?
?
3.4支持正則表達式,打印范圍內容?
3.5#,/關鍵字/p’?從第#行開始匹配
?
?3.6?‘/關鍵字/,#’?找到第#個關鍵字為止
?3.7打印奇偶數行
3.8刪除指定行?
?
?
?3.9?先備份內容再刪除
3.10??在指定行后插入?
?
?
?3.11修改全局,后面加g
3.12?查找?guī)c到幾點之間的日志
?文章來源:http://www.zghlxwxcb.cn/news/detail-651795.html
?
到了這里,關于Linux:shell腳本 正則表達式與AWK的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!