路徑名稱擴展

於 Bash shell 之命令列上指定 path 時,可運用一些特殊字符,來協助搜尋符合規則樣式的檔案目錄,

而此特殊字符一般稱之為 Wildcards(通配字元/萬用字元)或”Pattern matching”。

 

範例:

[barry@rhel ~]$ touch file{AB,c,12}{de,456} 'my file' 'test file'

[barry@rhel ~]$ export LANG=C

→ 先調整語系為 C,以利測試。

以下使用 echo 指令測試 expansion:

[barry@rhel ~]$ echo file[1-6]*

[barry@rhel ~]$ echo file[A-Z]???

[barry@rhel ~]$ echo abc{3..6}
abc3 abc4 abc5 abc6

→ {3..6} 展開後為 3 4 5 6。

[barry@rhel ~]$ echo file\* file*

[barry@rhel ~]$ (echo {ab,123}file;echo good dog) > test.txt

→ 將兩 echo 指令執行結果輸出至 test.txt 檔案中。

[barry@rhel ~]$ cat /etc/passwd | cat -n | head -n 30 \ > | tail -n 11 | tee testfile
→ 將 Enter key 跳脫出去,以便於第二提示號下繼續輸入未完成之指令敘述。

 

↑萬用字元 符號 ↓正規表示式
代表任何字串,可以是 0~n 個字元。 在「*」的前一個字元可以出現 0~n 次。
任意單一字元,含空白字元 。 ?   表前一個字元可出現 0 或 1 次。
表括弧內任一字元。使用-表範圍,如[a-e]表 a~e 任一字元。 [ab…] 表括弧內任一字元。[a-z0-9]中之「-」表一段連續範圍。
非括弧內任一字元。 [!ab…] 非括弧內任一字元。
非括弧內任一字元。 [^ab…]  
指令群組,表示指令之集合。 ( )

表字串群組。

EX1: (abc)?  

EX2: x(ab|cd)y

大括弧擴展(Brace expansion):將{}內之字串展開。字串間用”,”做區隔。 { }  

跳脫字符”\”(escape character):

Bash Shell 中有許多字元具特殊涵義,當欲將這些特殊字元當成一般字元對待時,可把此字元緊置於”\”後方(之間無其他字元),如此即忽略其特殊涵義。

當欲跳脫包含多個特殊字元之字串時,可用單引號或雙引號將字串包住。

\ 置於「\」後之特殊字符,會被當成一般字元處理。
  表任意單一字元,含空白字元。
  + 表前一個字元可出現 1~n 次。
    abc|xy|mn 表 abc 或 xy 或 mn。
  ^abc 表示該行是以 abc 為首。
  abc$ 表示該行是以 abc 為尾。

 

正規表示式(Regular Expression)

  • 簡稱 regexp 或 RE。
  • 是一種描述字串的方法,藉由所輸入字串來進行樣式比對,以達搜尋、替代或刪除等目的。
  • 輸入字串裡常指定一些特殊字符於其中,以提高執行效率。
  • 支援 regexp 的指令有 grep、sed、vim 等。

Note:一般於正規表示法的字串前後會加上單引號,

其目的是為了避免讓這些特殊字符提早被 shell 解析掉,以便能將其完整的交給支援 RE 的指令來處理。

EX: grep ’barry chen’ /etc/passwd

 

 更多資料  http://linux.vbird.org/linux_basic/0330regularex.php#basic_regexp


 

arrow
arrow
    創作者介紹
    創作者 STORY 的頭像
    STORY

    STORY

    STORY 發表在 痞客邦 留言(0) 人氣()