grep简单用法及脚本基础篇

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语言的操作符是相同的。包括:

赋值操作符:=;
计算操作符:+、-、*、/、**(求幂)、%;
位操作符:<<、<<=、>>、>>=、&、&=、|、|=、~、!、^、^=;
逻辑运算符:&&、||。

猜你喜欢

转载自blog.51cto.com/12148637/2368271