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字串的?,並顯??號
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字串及所在的?號
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/nologinoperator: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/bashmail: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簡單用法及腳本基礎篇