中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

正則表達式和四劍客-創新互聯

正則表達式:
不是一個工具程序,而是一個字符串處理的標準依據,是使單個字符串搜索、匹配一系列符號某個語法規則的字符串。
正則表達式的作用:
1、測試字符串的模式,數據驗證
2、替換文本
3、基于匹配模式去文本文件中提取出符合條件的內容
正則表達式:用來查找文件內容、文本、字符串,一般只支持四劍客grep、egrep、sed、awk
通配符:用來查找文件或者目錄的,普通命令都支持。find
正則表達式分類:
基礎正則表達式:BRE,常用的正則表達式
擴展正則表達式:ERE,對于基礎正則表達式的擴充和深化
linux文本處理工具:
vi/vim編輯器
grep(只支持基礎正則表達)
egrep(支持擴展正則表達)
sed(支持擴展正則表達)
awk(支持基礎正在表達支持擴展正則表達式)
字符串匹配的模式:
作用:用來檢查一個串是否包含某種子串,將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

通配符:
?:匹配文件名中含有0個或者1個字符
*:匹配0個或多個字符,一般以......開頭
find / -name “a?”
find / -name “a*”
^[0-9]+abc$
注:
^:以什么開頭
[0-9]:代表數字,匹配單個數字
+:配置多個,匹配多個數字
abc$:以abc結尾

^[a-z0-9_-]{3,15}$
注:
^[a-z0-9_-]:^代表以什么開頭;a-z代表字母a-z;0-9代表數字0-9;下劃線;連字符
{3,15}:3~15字符的長度
$:代表結束標記
基礎正則表達式的元字符:
元字符 作用
\轉義字符,用于取消特殊符號的含義,如:!、\n等
^匹配字符串的開始位置,如:^world匹配以world開頭的行
$匹配字符串的結束位置,如:world$匹配以world開頭的行
.匹配除\n(換行)之外的任意一個字符
*匹配前面的子表達式0次或者多次
[list]匹配list列表中的一個字符,如:[0-9]匹配任一位數字
[^list]匹配不在list列表中的一個字符,如:[^0-9]匹配任意一位非數字字符
{n}匹配前面的子表達式n次,如:[0-9]{2}匹配兩位數字
{n,}匹配前面的子表達式不少于n次,如:[0-9]{2,}表示兩位及兩位以上數字
{n,m}匹配前面的子表達式n到m此,如:{a-z}{2,3}匹配兩到三位的小寫字母
擴展正則表達式的元字符:
元字符 作用
+匹配前面表達式1次以上,如:go+d,將匹配至少一個o
匹配前面的子表達式0次或者1次,如go?d,將匹配gd或god
()將()號中的字符串作為一個整數,如:(xzy)+,將匹配xyz整體1次以上
管道符號以或的方式匹配字符串,如:good管道符號great,將匹配good或者great
四劍客:grep、egrep、sed、awk
grep工具
-i:忽略大小寫
-v:取反
過濾出
過濾掉

grep ‘root’ /etc/passwd       //篩選文件中包含root的行
grep -v ‘root’ /etc/passwd      //篩選文件中不包含root的行
注:-v  表示過濾掉,不顯示出來
grep ‘r..d’ /etc/passwd       //篩選r和d之間有兩個字符的行
grep ‘[^s]bin’ /etc/passwd     //篩選bin前面不是s的行
grep ‘^$’ /etc/passwd       //篩選出空白行
grep ‘t[es]’ /etc/passwd      //篩選包含字符串te或ts的行
grep ‘0\{1,\}’ /etc/passwd     //查找數字0出現1次及以上的行
grep -e "root;sshd"   文件名
grep -e ‘root’ -e ‘sshd’ /etc/passwd      //查找root和sshd的行,-e參數查找多個模式
grep ’[^a-z]ae’ /etc/passwd        //篩選ae前面不是小寫字母的行
grep ’^[a-z]ae’ /etc/passwd        //篩選ae前面是小寫字母的行
注:當使用連續的字符時,小寫字母[a-z],大寫字母[A-Z],數字[0-9]
grep ’o*’ /etc/passwd            //匹配所有內容(若有空白行的文件,甚至包括空白行)
注:oo*匹配至少包含一個o的行(第一個o必須出現,第二個o可出現0次或多次)
egrep工具
egrep '0+' /etc/passwd     //匹配至少包含一個0的行
egrep ‘(root|ntp)’ /etc/passwd    //匹配包含root或者nto的行
egrep ‘ro?t’ /etc/passwd     //匹配rt或者rot的行
egrep -v ‘^$|^#’ /etc/passwd    //過濾文件中空白行與#開頭的行,沒有空白行與#號開頭的行,所以沒有任何輸出
sed工具概述
sed是文本處理工具,讀取文本內容,根據指定的條件進行處理,如刪除,替換,添加等
可在無交互的情況下實現相當復雜的文本處理操作
被廣泛應用于shell腳本,已完成自動化處理任務
sed依賴于正則表達式
sed命令語法:
sed -e ‘編輯指令’ 文件1 文件2...  注:-e,在’編輯命令’中有”;”來分隔執行命令
sed -n -e ‘編輯指令’文件1 文件2...   -n只顯示過濾出內容
sed -i -e ‘編輯指令’ 文件1 文件2...   -i:流編輯器,讀一行處理一行
sed命令格式:
編輯命令格式:[地址1,[地址2]]操作[參數]
“地址”,可數字、正則表達式、$,如果沒有地址代表是所有行
“操作”,可以是p、d、s、r、w、i等
“參數”,一般有g,代表只要符合條件的全部進行處理(g全部)
常用操作:
p:輸出指定的行
d:刪除指定的行
s:子串替換,格式:”行范圍s/舊字符串/新字符串/g”
r:讀取指定條件
w:保存為文件
i:插入,在當前行前面插入一行或多行
輸出指定的行:
  sed -n ‘p’ /etc/passwd    //將所有內容輸出  cat
  sed -n ‘-7p’ /etc/passwd   //將第7行內容輸出
  sed -n ‘$p’ /etc/passwd    //將最后一行輸出
  sed -n ‘1,7{p;n}’ /etc/passwd   //將1~7行中的奇數行輸出
  sed -n ‘1,7{n;p}’ /etc/passwd   //將1~7行中的偶數行輸出
sed -n ‘1,+4p’ /etc/passwd    //從第1行,連續4行進行輸出
sed -n ‘/root/p’ /etc/passwd    //將匹配包含root的行進行輸出
sed -n ‘10,/nom/p’ /etc/passwd   //將從第10行至第一個包含nom的進行輸出
sed -nr ‘/ro{1,}t/p’ /etc/passwd   //匹配不少于1次前導字符0,加-r參數支持擴產展正則表達式   rot root
sed -n’/root\|ntp/p’ /etc/passwd    //輸出包含root或者ntp的行 注:如果遇到特殊符號,擴展正則需要轉義符”\”
sed -n ‘/root/=’ /etc/passwd      //將包含root所在的行行號輸出,“=”用來輸出行號
sed -e ‘5q’ /etc/passwd          //輸出前五行信息后退出,q退出
sed -e ‘5p ; 7p;9p’ /etc/passwd     //輸出5行、7行、9行信息插入符合條件的行:
插入符合條件的行:
sed ‘root/i admin:x:490:490::/:/sbin/nologin’ /etc/passwd   //在包含root行的前面一行插入admin:x:490:490::/:/sbin/nologin
sed ‘/root/a admin:x:490:490::/:/sbin/nologin’ /etc/passwd     //在包含root行的下一行插入admin:x:490:490::/:/sbin/nologin
sed ‘3aADMIN’ /etc/passwd           //在第3行之后插入ADMIN
刪除符合要求的行:
  sed ‘1d’ /etc/passwd             //刪除第一行
  sed ‘$d’ /etc/passwd             //刪除最后一行
  sed ‘/^$/d’ /etc/passwd          //刪除所有空行
  sed ‘2,4d’ /etc/passwd           //刪除第2到4行
  sed ‘/root/d’ /etc/passwd         //刪除包含root的行,這里的”i”表示取反操作
  sed ‘/^root/d’ /etc/passwd        //刪除以root開頭的行
  sed ‘/nologin$/d’ /etc/passwd     //刪除以nologin結尾的行替換成符合條件的文本:
  sed ‘s/root//g’ /etc/passwd       //將文件中所有的root都替換成空   加g替換所有   s:全部內容
  sed ’/root/c admin:x:490:490::/:/sbin/nologin’ /etc/passwd      //將含有root的行為替換為admin:x:490....
  sed -n ‘s/root/admin/2p’ /etc/passwd      //把每行的第2個root替換成admin
  sed ’/root/s/root/ROOT/g’ /etc/passwd       //將第1~3行中的所有bin都替換成BIN
  sed ‘s/$/ABC/’ /etc/passwd         //在每行行尾插入字符串ABC
  sed ‘s/^/#/’ /etc/passwd            //在每行行首插入#號
  sed ‘/root/s /^/#/’ /etc/passwd       //將包含root的行的行首插入#號
  sed ‘1c ABC’ /etc/passwd           //將第一行替換成ABC
  sed ‘y/root/ROOT/’ /etc/passwd       //將root對應替換為ROOT       y:對應替換
  sed ‘/1,10y/root/ROOT/’ /etc/passwd      //將第1~10行中的root對應替換為ROOT
遷移符合條件的文本:
  sed ‘15,16 w out.txt’ test.txt   //另存為
  sed ‘5r /etc/reslov.conf’ test.txt         //將/etc/reslov.conf內容讀取的當前文件第五行后面
  sed ‘1,5{H;d};$G’ test.txt             //將第1~5行內容遷移至末尾  注:H,復制到緩沖區。G,追加到指定行后
  sed ‘/^ip/s/^/#/’ test.txt               //在以ip開頭的行的行首插入#
  sed ‘1,5H;15,16G’ test.txt

執行多次命令:
  sed -ne ‘s/root/admin/’ -ne ‘s/bash/sh/p’ /etc/passwd     //將root和bash動作替換
  sed -ne ‘s/root/admin/;s/bash/sh/p’ /etc/passwd        //將root和bash動作替換
直接修改文件內容:  有-i直接修改原文件,保存修改后的文件
  sed -i ‘s/^/#/’ /etc/passwd                  //在每行開頭插入#號,直接修改原文件
awk工具介紹
awk也是一個功能強大的編輯工具,與sed一樣,可在無交互的情況下實現相當復雜的文本操作
命令格式: 
awk 選項 '模式或條件 {編輯指令}’ 文件1 文件2
awk -f 腳本文件 文件1 文件2

工作原理:
逐行讀取文本,默認以空格為分隔符進行分隔,將分隔所得的各個字段保存到內建變量中,并按模式或者條件執行編輯命令
awk內置變量
FS:指定每行文本的字段分隔符,缺省為空格或制表位。      注:默認分隔符為空格     等同于-F
NF:當前處理的行的字段個數
NR:當前處理的行的行號(序數)
$0:當前處理的行的整行內容
$n:當前處理行的第n個字段(第n列)
案例:
awk -F: '{print $0,NF}' /etc/passwd       //輸出以冒號為分隔的/etc/passwd文件中記錄的字段段數
df -hT |awk '{print $1,$6}'        //用awk截取命令df -hT輸出的結果,不帶任何條件,進行格式化,打印第1列和第6列數據
awk '{print $0}' /etc/passwd       //輸出所有內容
cat /etc/passwd  
grep ""  /etc/passwd  
sed -n 'p' /etc/passwd       //輸出所有內容
打印文本內容:
awk 'NR==1,NR==3{print}' bfile       //輸出第1至第3行內容
awk 'NR==1||NR==3{print}' bfile      //輸出第1行、第3行內容
awk '/^root/{print}' /etc/passwd        //輸出以root開頭的行
awk '/nologin$/{print}' /etc/passwd      //輸出以nologin結尾的行
awk '(NR>=1)&&(NR<=3){print}' /etc/passwd         //輸出第1行到第3行內容
awk "(NR%2)==1{print}' /etc/passwd            //輸出所有奇數行的內容
awk '(NR%2)==0{print}' /etc/passwd            //輸出所有偶數行的內容
awk -F: '!($3<900)' /etc/passwd                //輸出第3個字段不小于900的行,“!”號表示取反
在使用awk的過程中,可以使用關系運算符作為“條件”,用于比較數字與字符串,運算符大于(>)、小于(<)、小于等于(<=)、等于(==)、不等于(!=)
也可使用邏輯操作符&&,表示“與”,||表示“或”,!表示“非”
還可以進行簡單的數學運算加(+)、減(—)、乘(*)、除(/)、取余(%)、乘方(^)。
只有當條件為真,才執行指定的動作。
awk -F: '{if($3>200)print $0}' /etc/passwd    //輸出第3個字段大于200的行
awk -F: '{max=($3>$4)?$3:$4;print max}' /etc/passwd    
 //如果第3個字段的值大于第4個字段的值,則把問號前表達式的值賦給max,否則就將冒號后那個表達式的值賦給max
awk -F: '{max=($3>200)?$3:$1;print max}' /etc/passwd    //如果第3個字段的值大于200,則把第3個字段的值賦給max,否則就將第1個字段的值賦給max
在使用awk過程中還可以使用條件表達式,條件表達式的運算涉及兩個符號,冒號和問號,其實質就是if...else語句的捷徑,有著if...else相同的結果
接字段輸出文本
awk -F: '{print NR,$0}' /etc/passwd      //輸出處理數據的行號,每處理完一條記錄,NR值加1
awk -F":" '$3<5{print $1 $3}'/etc/passwd     //輸出第3列小于5的第1列與第3列數據
awk -F ":" '($1~"root")&&(NF==7){print $1,$3}'/etc/passwd      //輸出包含7個字段,并且第1個字段中包含root的行第1與第2字段內容
awk -F":" 'NR==3,NR==7{print $1,$7}' /etc/passwd       //輸出第3行到第7行中以冒號為分隔符的第1列與第7列的數據

輸出數據時插入文本標簽:
awk -F: '/^root/{print "Hi," $1}' /etc/passwd        //輸出以冒號為分隔符,以root開頭的行第一列,且在前面插入“Hi,”
awk '{print $1"--"$3}' 6.txt   //輸出第一列和第二列并加入普通字符     引號引用普通字符
awk -F":" '$7~"/bash"{print $1}' /etc/passwd      //輸出冒號分隔且第7個字段中包含/bash的行的第1個字段
awk -F':''{print $1":"$2":"$3":"$4}' /etc/passwd    //保留原來的格式,輸出以冒號為分隔,/etc/passwd文件的前4個字段
awk -F":" '{print $1,$3}' /etc/passwd               //輸出以冒號為分隔符的第1列和第3列
awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd       //輸出以冒號為分隔符的第1列和第3列
awk 'BEGIN{X=0};/\/bin\/bash$/{x++};END{printx}' /etc/passwd       //統計以/bin/bash為結尾的行數
awk執行順序:首先執行BEGIN{}中的操作,然后從指定的文件中逐行讀取數據,自動更新NF、NR、$0、$1等內建變量的值,去s執行'模式或條件{編輯指令}’;最后執行END{}操作

處理命令輸出的結果:
date |awk '{print "Month:"$2"\nYear:"$6}'        //輸出日期的第2列且在前面插入Month:,換行輸出第6列并在前面插入Year

另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

創新互聯-專業網站定制、快速模板網站建設、高性價比遷西網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式遷西網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋遷西地區。費用合理售后完善,十余年實體公司更值得信賴。

當前文章:正則表達式和四劍客-創新互聯
網站鏈接:http://www.2m8n56k.cn/article34/pehse.html

成都網站建設公司_創新互聯,為您提供品牌網站建設企業建站ChatGPT手機網站建設微信公眾號小程序開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 国产一级毛片在线 | 精品久久国产老人久久综合 | 午夜三级在线 | 日本欧美一区二区三区视频 | 日本三级日产三级国产三级 | 欧美成人免费全部观看天天性色 | 欧美日韩加勒比一区二区三区 | 日韩中文字幕在线看 | 久久久久国产成人精品 | 国产日韩精品一区二区在线观看 | 国产二区三区毛片 | 不卡一区二区在线观看 | 在线综合+亚洲+欧美中文字幕 | 久久精品国产国产精品四凭 | 日韩欧美一区二区三区久久 | a级高清观看视频在线看 | 精品国产美女福到在线不卡f | 成网站在线观看人免费 | 久久精品国产在爱久久 | 狠狠色丁香久久婷婷综合_中 | 欧美中文字幕在线视频 | 欧美三级做爰在线 | 成人国产精品免费软件 | 亚洲最黄视频 | 67194成人手机在线 | 高清不卡一区二区三区 | 91最新91精品91蝌蚪 | 国产va精品网站精品网站精品 | 中国一级做a爰片久久毛片 中日韩欧美一级毛片 | 韩国日本一级片 | 国产成人a一在线观看 | 国产一级毛片夜一级毛片 | 国产女厕偷窥系列在线视频 | 亚洲国产精品久久人人爱 | 精品久久久中文字幕二区 | 欧美一级毛片免费看 | 欧美一级α片毛片免费观看 | 日本天堂在线视频 | 亚洲七七久久精品中文国产 | 台湾三级香港三级在线中文 | 国产爽的冒白浆的视频高清 |