1. 程式人生 > >grep簡單用法及腳本基礎篇

grep簡單用法及腳本基礎篇

The daemon 文件 eth -s 邏輯與 常用 保存 代碼

grep的基本選項說明
  • grep命令 選項說明: --color=auto:對匹配到的?本著?顯?; -v:顯?不被模式匹配到的?; -i:
    忽略字符??寫; -n:顯?匹配的?號; -c:統計匹配到的字符串; -o:僅顯?匹配到的字符串; -q:靜
    默模式,不輸出任何信息; -A #:表?顯?匹配到的?並顯?該?後#?,#表?為數字; -B #:表?顯?
    匹配到的?並顯?該?前#?,#表?為數字; -C #:表?顯?匹配到的?並顯?該?前後各#?,#表?為
    數字; -e:實現多個選項的邏輯or或更新; -w:匹配整個單詞; -E:使?ERE擴展正則,等效於egrep命
    令; -F:相當於fgrep,不使?正則表達式;

    例題:【例1】查找/etc?錄下,所有包含conf字串的?件
    [root@magedu ~]# ls -R /etc|grep conf
    anthy-conf
    asound.conf
    autofs.conf
    autofs_ldap_auth.conf
    ...
    【例2】顯?/root/passwd?件中包含root字串所在的?並顯??號
    [root@magedu ~]# grep root /root/passwd
    1:root:x:0:0:root:/root:/bin/bash
    11:operator:x:11:0:operator:/root:/sbin/nologin
    【例3】顯?passwd?件中,不包含bash字串的?,並顯??號
    [root@magedu ~]# grep -n -v bash passwd
    2:bin:x:1:1:bin:/bin:/sbin/nologin
    3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4:adm:x:3:4:adm:/var/adm:/sbin/nologin
    5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6:sync:x:5:0:sync:/sbin:/bin/sync
    ...
    【例4】顯?passwd?件中,包含root字串的?的總?數
    [root@magedu ~]# grep -c root passwd
    2
    【例5】僅顯?/root/passwd?件中的root字串及所在的?號
    [root@magedu ~]# grep -on root passwd
    1:root
    1:root
    1:root
    11:root
    【例6】顯?/root/passwd?件中,包含root字串的?和其下2?的內容
    [root@magedu ~]# grep -A 2 root passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    【例7】顯?/root/passwd?件中,包含root字串的?和其上2?的內容
    [root@magedu ~]# grep -B 2 root passwd
    root:x:0:0:root:/root:/bin/bash

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin

    腳本變量之位置變量

    shift用法:shift功能是可以更換參數位置
    位置參數的值總結位置參數 含義
    $0 當前這個Shell程序的文件名
    $# 傳遞給程序的總的參數數目
    $? 上一個代碼或者Shell程序在Shell中退出的情況,如果正常退出則返回0,否則返回非0值
    $* 傳遞給程序的所有參數組成的字符串
    $n 表示第n個參數(n<10)
    $@ 以“參數1”、“參數2”……保存所有的參數
    $$ 本程序的(進程ID)PID
    $! 上一個命令的PID
    ${n} 表示第n個參數(n>9)

    常用整數比較操作符函數 說明(例子)
    -eq 等於,if [ "$a" -eq "$b" ]
    -ne 不等於,if [ "$a" -ne "$b" ]
    -gt 大於,if [ "$a" -gt "$b" ]
    -ge 大於等於,if [ "$a" -ge "$b" ]
    -lt 小於,if [ "$a" -lt "$b" ]
    -le 小於等於,if [ "$a" -le "$b" ]
    < 小於(在雙括號內使用),(("$a"<"$b"))
    <= 小於等於(在雙括號內使用),(("$a"<="$b"))

    大於(在雙括號內使用),(("$a">"$b"))
    = 大於等於(在雙括號內使用),(("$a">="$b"))

    常用字符串比較操作符函數 說明(例子)
    = 等於,if [ "$a"="$b" ]
    == 等於,if [ "$a"=="$b" ],在[[ ]]結構裏使用匹配模式
    != 不等於,if [ "$a"!="$b" ],在[[ ]]結構裏使用匹配模式
    < 小於,if [[ "$a"<"$b" ]],if [ "$a"\<"$b" ](在[]結構裏<需要轉義)

    大於,if [[ "$a">"$b" ]],if [ "$a"\>"$b" ](在[]結構裏>需要轉義)
    -z 字符串為“null”,長度為0
    -n 字符串不為“null”,長度不為0

    常用混合比較操作符函數 說明
    -a 邏輯與
    -o 邏輯或

    分析下列的測試目錄含義

    [[ $a==z ]] #如果變量$a以字符"z"開始(匹配模式)則為真
    [[ $a=="z
    " ]] #如果變量$a與字符"z"(字面上的匹配)相等則為真
    [ "$a"=="z
    " ] #如果變量$a與字符"z*"(字面上的匹配)相等則為真
    [ -f "somefile" ] #判斷是否為一個文件
    [ -x "/bin/ls" ] #判斷/bin/ls是否有可執行的權限
    [ -n "$var" ] #判斷$var變量是否有值
    [ "$a"="$b" ] #判斷$a和$b是否相等

嵌套的if/then語句

if [ condition1 ]
    then
        if [ condition2 ]
            then
            do-something            #僅當condition1和condition2同時滿足才執行
        fi
fi

 操作符相關主題

常見的操作符主要包括賦值操作符、計算操作符、位操作符合邏輯操作符。它們與C語言的操作符是相同的。包括:

賦值操作符:=;
計算操作符:+、-、*、/、**(求冪)、%;
位操作符:<<、<<=、>>、>>=、&、&=、|、|=、~、!、^、^=;
邏輯運算符:&&、||。

grep簡單用法及腳本基礎篇