linux -- shell 編程

linux -- shell 編程

1、正則表達式

  一、正則表達式 PK 通配符

    

    

  二、基礎正則表達式

    1)、*  前一個字符匹配 0 次或者任意屢次

        ~ grep   "a*"   test_rule.txt      # 匹配全部內容,包括空白行linux

        ~ grep   "aa*"   test_rule.txt       # 匹配至少包含兩個連續 a 的字符串正則表達式

        ~ grep   "aaa*"   test_rule.txt     # 匹配最少包含兩個連續a的字符串shell

        ~ grep   "aaaa*"   test_rule.txt   # 匹配最少包含四個個連續a的字符串編程

    2)、.  匹配除了換行符以外的任意一個字符

        ~ grep  "s..d"   test_rule.txt      # 「 s..d 」會匹配在 s 和 d 這兩個字母之間必定有兩個字符的單詞編輯器

        ~ grep  "s.*d"   test_rule.txt      # 匹配在 s 和 d 字母之間有任意字符spa

        ~ grep   ".*"      test_rule.txt      # 匹配全部內容3d

    3)、^  匹配行首

        ~ grep   "^M"   test_rule.txt      # 匹配以大寫「 M 」開頭的行blog

    4)、$    匹配行尾

        ~ grep   "n$"    test_rule.txt      # 匹配以小寫「 n 」結尾的行排序

        ~ grep   -n   "^$"   test_rule.txt    # 會匹配空白行字符串

    5)、[]    匹配中括號中制定的任意一個字符,只匹配一個字符

        ~ grep   " s[ao]id "   test_rule.txt     # 匹配 s 和 i 字母中,要不是 a 、要不是

        ~ grep    "[0-9]"       test_rule.txt   # 匹配任意一個數字

        ~ grep    "[a-z]"       test_rule.txt   # 匹配用小寫字母開頭的行

    6)、[^]   匹配除中括號的字符之外的任意一個字符

        ~ grep    "^[^a-z]"    test_rule.txt      # 匹配不用小寫字母開頭的行

        ~ grep    "^[^a-zA-Z]"   test_rule.txt    # 匹配不用字母開頭的行

    7)、\   轉義符

        ~ grep    "\.$"    test_rule.txt     # 匹配使用「 . 」結尾的行

    8)、\{n\}  表示其前面的字符剛好出現 n 次

        ~ grep "a\{3\}" test_rule.txt         # 匹配 a 字母連續出現三次的字符串

        ~ grep "[0-9]\{3\}" test_rule.txt    # 匹配包含連續的三個數字的字符串

    9)、\{n,\} 表示其前面的字符出現不小於 n 次

        ~ grep "^[0-9]\{3,\}[a-z]" test_rule.txt  # 匹配最少用連續三個數字開頭的行

    10)、\{n,m\}   匹配其前面的字符至少出現n次,最多出現m次

        ~ grep "sa\{1,3\}i" test_rule.txt     # 匹配在字母 s 和字母 i 之間有最少一個 a ,最多三a

2、字符截取命令

  一、cut

    1)、字段處理命令

    2)、cut [options] 文件名

      [options]

        

        -f 行號:  提取第幾列

        -d 分隔符:  按照指定分隔符分割列 

    3)、example:

      

      

      

    4)example侷限性(沒法匹配空格)

      

  二、printf

    1)、用法

      printf  ‘ 輸出類型 輸出格式 ’ 輸出內容

        

        

    2)、練習(多少個%s,就表明以多少個數字爲一個字符)

      

      

      

      

    3)、與 awk 之間的關係(printf 單獨使用沒什麼屌用,主要是能夠和 awk 配合使用)

      print : print 會在每一個輸入以後自動加入一個換行符(linux 默認沒有 print 命令)

      printf :是標準格式輸出命令,並不會手動加入換行符,若是須要換行,須要手工加入換行符

      example:

        

        

  三、awk

    1)、使用:awk ‘ 條件1 {動做1} 條件2 {動做2} ... ’

        條件:通常使用關係表達式做爲條件

          x>=10  大於等於

          x > 10  判斷變量 x是否大於10

          x<=10  小於等於

        動做

          格式化輸出

          流程控制語句

    2)、BEGIN、END、FS內置變量、關係運算符

      

      

      

      

      

      

  四、sed

    1)、簡介:

      sed 是一種幾乎包括在全部 UNIX 平臺 (包括 linux)的輕量級流編輯器。

      sed 主要是用來將數據進行選取,替換,刪除,新增的命令。

    2)、用法:            

      sed【options】【actions】文件名

      【options】

        - n :通常 sed 命令會把全部數據都輸出到屏幕,若是加入此選擇,則只會吧通過 sed 命令處理的行輸出到屏幕

        - e :容許對輸入數據應用多條 sed 命令編輯

        - i  : 用 sed 的修改結果直接修改讀取數據的文件,而不是由屏幕輸出

      【actions】

        a \ :追加,在當前行後添加一行或多行。

          

        c \ :行替換,用 c 後面的字符串替換原數據行。

          

        i  \ :插入,在當前行插入一行或多行。

          

        d:刪除,刪除制定的行。

          

        p:打印,輸出指定的行。

          

        s:字符串替換,用一個字符串替換另外一個字符串。「  s/old/new/g  」

          

3、字符處理命令

  一、sort (排序)

    sort [選項] 文件名

    sort --help

  二、wc

    wc --help

4、條件判斷

  一、按照文件類型進行判斷

    

    

    

  二、按照文件權限進行判斷

    

    

    寫一個腳本 判斷一個文件是否有讀寫執行權限 要能判斷出是 用戶 組 和其餘人

  三、兩個文件之間的比較

    

    

  四、兩個整數之間進行比較

    

    

  五、字符串的判斷

    

     

  六、多重條件判斷

    

    

5、流程控制

  一、if

  二、case

  三、for

  四、while and until

相關文章
相關標籤/搜索