1. 程式人生 > >正則表示式和Shell指令碼。

正則表示式和Shell指令碼。

正則表示式
分兩類:
基本正則表示式:BRE
擴充套件正則表示式:ERE
grep -E, egrep
正則表示式引擎:
採用不同演算法,檢查處理正則表示式的軟體模組
PCRE
元字元分類:字元匹配、匹配次數、位置錨定、分組

基本正則表示式元字元
字元匹配:
. 匹配任意單個字元
[] 匹配指定範圍內的任意單個字元,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定範圍外的任意單個字元
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字元,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字元(空格和製表符)
[:print:] 可列印字元
[:punct:] 標點

匹配次數:用在要指定次數的字元後面,用於指定前面的字元要出現的次數

  • 匹配前面的字元任意次,包括0次
    貪婪模式:儘可能長的匹配
    .* 任意長度的任意字元
    \? 匹配其前面的字元0或1次
    + 匹配其前面的字元至少1次
    {n} 匹配前面的字元n次
    {m,n} 匹配前面的字元至少m次,至多n次
    {,n} 匹配前面的字元至多n次
    {n,} 匹配前面的字元至少n

位置錨定:定位出現的位置
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<PATTERN\> 匹配整個單詞

Shell程式:提供了程式設計能力,解釋執行
shell程式設計:過程式、解釋執行
程式語言的基本結構:
各種系統命令的組合
資料儲存:變數、陣列
表示式:a + b
語句:if
shell指令碼:
包含一些命令或宣告,並符合一定格式的文字檔案
格式要求:首行shebang機制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
shell指令碼的用途有:
自動化常用命令
執行系統管理和故障排除
建立簡單的應用程式
處理文字或檔案

建立shell指令碼
第一步:使用文字編輯器來建立文字檔案
第一行必須包括shell宣告序列:#!
示例:#!/bin/bash
添加註釋
註釋以#開頭
第二步:執行指令碼
給予執行許可權,在命令列上指定指令碼的絕對或相對路徑
直接執行直譯器,將指令碼作為直譯器程式的引數執行

指令碼程式碼開頭約定
1、第一行一般為呼叫使用的語言
2、程式名,避免更改檔名為無法找到正確的檔案
3、版本號
4、更改後的時間
5、作者相關資訊
6、該程式的作用,及注意事項
7、最後是各版本的更新簡要說明
shell指令碼示例
#!/bin/bash

------------------------------------------

Filename: hello.sh

Revision:

Date: 2018/12/23

Author:

Email:

Website:

Description:

Copyright:

License:

------------------------------------------

echo “hello ”

指令碼除錯
檢測指令碼中的語法錯誤
bash -n
除錯執行
bash -x