shell腳本之正則三劍客(grep awk sed)

grep:   grep  --color  帶顏色,能夠用來判斷正則寫的是否正確:php

一、正則中的特殊符號  .   *       .*   +   ? shell

.      表示任意一個字符:vim

*     表示零個或多個星號前面的字符:(a*表示a有零個或者多個)bash

+    表示一個或多個加號前面的字符:(a+表示a有1個或者多個)   spa

?   表示另外一個或一個問號前面的字符: (a?表示a有零個或這1個)code

.*    通配,表示任意個任意字符:  貪婪匹配class

[root@localhost_01 ~]# echo 'aaaabbbb'|grep "a*"      #能夠匹配,表示匹配多個a:
aaaabbbb
[root@localhost_01 ~]# echo 'bbbb'|grep "a*"            #沒有a的時候也匹配,表示匹配零個a:
bbbb
[root@localhost_01 ~]# echo 'aaaabbbb'|grep -E "a+b"    #表示匹配一個或者多個a:
aaaabbbbb
[root@localhost_01 ~]# echo 'aaaabbbb'|grep -E "a?b"     #表示匹配零個或者一個a:
aaaabbbbtest

[root@localhost_01 ~]# echo 'asdfsdafsadfas'|grep ".*"     #表示任意匹配,貪婪匹配:
asdfsdafsadfas
二、grep  -r  遍歷目錄:  前面紫色的表示所在目錄(後面帶冒號)     紅色表示過濾的文字:awk

[root@localhost_01 ~]# grep -r 'root' /root/變量

/root/shell/test1.sh:filename=/root/shell/123
/root/.viminfo   "   /root/shell
/root/.viminfo:-'  3  1  /data/wwwroot/111.com/123.php
/root/.viminfo:-'  2  0  /data/wwwroot/111.com/123.php
/root/.viminfo:-'  1  0  /data/wwwroot/111.com/123.php
二、sed:

sed  -i  :直接更改源文件:

sed -r 's#([^:]+):(.*):([^:]+)#\3\2\1#g'

head /etc/passwd|sed -r 's#([^:]+):(.*):([^:]+)#\3\2\1#g'
/bin/bashx:0:0:root:/rootroot
/sbin/nologinx:1:1:bin:/binbin
/sbin/nologinx:2:2:daemon:/sbindaemon
/sbin/nologinx:3:4:adm:/var/admadm
/sbin/nologinx:4:7:lp:/var/spool/lpdlp
/bin/syncx:5:0:sync:/sbinsync
/sbin/shutdownx:6:0:shutdown:/sbinshutdown
/sbin/haltx:7:0:halt:/sbinhalt
/sbin/nologinx:8:12:mail:/var/spool/mailmail
/sbin/nologinx:11:0:operator:/rootoperator

三、awk:分隔符  awk  -F ':'

定義多個分隔符:   awk  -F ':|#|?|+'   「{print  $NF}」   test

[root@localhost_01 ~]# head /etc/passwd > test
[root@localhost_01 ~]# awk -F ':' '{print NF}' test
7
7
7
7
6
7
7
4
4
7
[root@localhost_01 ~]# awk -F ':|#|?|+' "{print $1}" test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp+x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt#x#7#0:halt:/sbin:/sbin/halt
mail?x?8?12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

awk能夠調用shell的變量:    a=5 ; awk  -v    b=$a'{print b}'

[root@localhost_01 ~]# cat test7.sh 
#!/bin/bash
a=5
awk -v b=$a -F ':' '{print $b}' test
[root@localhost_01 ~]# sh test7.sh 
root
bin
daemon
adm
/var/spool/lpd
sync
shutdown
operator
相關文章
相關標籤/搜索