系統常見特殊符號、通配符、正則表達式


一、系統常見特殊符號

  1、基礎符號系列

  1)$

  ①普通用戶命令行提示符      

    [sangha@hasang02-01 ~]$

  ②在awk中,$1表示第一列

    awk '{print $1}' test.txt

  ③取出變量的內容

    echo $LANG

  

  2)!

  ①取反或排除

    awk '!/xiang/' test.txt

    find -type f ! -name "*.txt"|xargs ls -l

  ②命令行中表示取出最近命令

    !awk(不建議用)== history|grep awk

 

  3)|

  管道

 

  4)#

  ①root用戶命令提示符

    [root@hasang02-01 ~]# 

  ②注釋   

 

  2、引號符號系列

  1)單引號:' '

    輸入什么,就輸出什么

  2)雙引號:" "

    類似單引號,單部分內容會被解析

  3)反引號:` `

    執行引號里面的命令,用於其他命令調用,同$()

 

  3、定向符號系列

  1)小於符號:<

  ①一個小於號:標准輸入重定向

    xargs -n2 < test.txt    --- 把文件里的內容按兩個一行顯示

  ②兩個小於號:標准輸入重定向

    用於一次性向文件中寫入多行內容

 

  2)大於符號:>

  ①一個大於號:標准輸出重定向(會清空原文件內容)

    echo "abc" >test.txt

  ②兩個大於號:標准輸出追加重定向(追加到文件最后一行)

    echo "abc" >>test.txt

 

  3)錯誤重定向:2>

  ①錯誤輸出重定向:ifconfi 2>test.txt

  ②錯誤輸出追加重定向:ifconfi 2>>test.txt

  ③把錯誤的正確的都追加輸入到指定文件:ifconfig &>>test.txt 或 ifconfg >>test.txt 2>&1

    

  4、路徑信息系列

  1)點:.

  ①表示當前目錄:cd .

  ②加載(==source):. /etc/profile

  2)點點:..

  表示上一層目錄:cd ..

  3)波浪線:~

  表示當前用戶家目錄:cd ~

 

  5、邏輯符號系列

  1)兩個and符號:&&

  前面的命令執行成功,再執行后面的命令

  2)兩根豎線:||

  前面的命令執行不成功,才執行后面的命令

  3)分號: ;

  分別執行兩個命令

 

二、通配符

  通配符多用於處理文件名稱信息,find ls -l 常用

  1、星號:*

  表示匹配所有內容

  示例1:找出以.txt結尾的文件

  find /test -type f -name "*.txt"

  示例2:找出包含字符串test的文件

  find /test -type f -name "*test*"

  示例3:找出以test開頭.txt結尾的文件

  find /test -type f -name "test*.txt"

 

  2、大括號:{}

  表示構造出一個序列

  ①單個連續序列

  echo {1..10} ; echo {a..z}

  ②單個不連續序列

  echo {1..10..2} == echo {1,3,5,7,9,}

  ③多個連續序列

  echo {1..3}{1..3}

  ④多個不連續序列

  echo {1,3,4}{2,3}

  ⑤單個字符串和序列組合

  echo A{A,B} ; echo A{,B}

  示例1:一次性創造多個文件

  touch stu{1..10}.txt

  示例2:文件備份

  copy test.txt{,.bak}

 

三、基礎正則表達式(basic regular expression BRE)

  正則表達式多用於處理文件內容信息,三劍客命令和各種計算機語言常用

  1.尖號:^

  表示以什么開頭的信息:grep '^m' test.txt

  

  2.美元符號:$

  找出以什么結尾的信息:grep 'm$' test.txt

 

  3.尖號加美元符號:^$

  匹配空行信息:grep -v '^$' test.txt

 

  4.一個點:.

  匹配任意一個且只有一個字符信息(不能匹配空行):grep -o '.$' test.txt

  

  5.星號:*

  匹配0個或多個連續出現的字符信息,會匹配出找不到的內容,預支匹配,默認將所有內容顯示出來:grep '0*' test.txt

 

  6.點星:.*

  匹配文件中所有的內容(可以匹配空行信息):grep '.*' test.txt

  ①找出文件以m開頭,一行中的所有信息:grep '^m.*' test.txt

  ②找出文件以m開頭,以m結尾的信息:grep '^m.*m$' test.txt

 

  7.轉譯符號:\

  可以將有意義的符號,轉譯成沒有意義的符號,也可以將沒有意義的符號,轉譯成有意義的符號。

  ①找出以.結尾的行的信息:grep '\.$' test.txt

  ②將文件一行信息,轉換成一列顯示:tr " " "\n" <test.txt

  

  8.中括號:[abc]

  表示分別匹配中括號里的內容,即匹配a或b或c:grep '[abc]' test.txt

  示例1:找出不包含數字或大寫字母的行:grep -v '[0-9A-Z]' test.txt 

  

  9.中括號加尖號:[^abc]

  排除/不匹配指定字符信息:grep '[^abc]' test.txt

  示例1:找出不以a或b或c開頭的行

  grep '^[^abc]' test.txt

  示例2:找出不以空格結尾的行

  grep '[^ ]$' test.txt

 

四、擴展正則表達式(extended regular expression ERE)

  1.加號:+

  +前面字符出現一次或一次以上,只顯示包含對應字符串的行(對比*)

  egrep '[0-9]+' test.txt

 

  2.豎線:|

  匹配多個滿足條件的信息:egrep 'a|b|c' test.txt

 

  3.小括號:()

  匹配一個整體信息:grep 'a(b|c)d' test.txt

  后項引用前面括號里的內容(多與sed連用):echo 123456|sed 's#(..)(..)(..)#<\2><\3><1>#g'

 

  4.大括號:{}

  指定匹配前面一個字符出現了多少次

  1){n,m} :指定前面一個字符連續最少出現n次,最多出現m次

  2){n}:指定前面一個字符連續出現了n次

  3){n,}:指定前面一個字符連續出現了最少n次

  4){,m}:指定前面一個字符連續出現了最多m次

 

  5.問號:?

  匹配前一個字符出現了1次或0次:egrep 'a?' test.txt

 

五、基礎正則表達式和擴展正則表達式的區別

  基礎正則命令:grep  sed  awk

  擴展正則命令:egrep     sed -r    awk

  如果一定要用基礎正則命令來使用擴展正則表達式的話,必須在擴展正則表達式前面加上轉譯符 \

  如:grep 'a\|b' test.txt  ;   sed -n  "/3306\|1521/p" /etc/services

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM