2019独角兽企业重金招聘Python工程师标准>>>
grep: grep --color 带颜色,可以用来判断正则写的是否正确:
1、正则中的特殊符号 . * .* + ?
. 表示任意一个字符:
* 表示零个或多个星号前面的字符:(a*表示a有零个或者多个)
+ 表示一个或多个加号前面的字符:(a+表示a有1个或者多个)
? 表示另一个或一个问号前面的字符: (a?表示a有零个或这1个)
.* 通配,表示任意个任意字符: 贪婪匹配
[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:
aaaabbbb
[root@localhost_01 ~]# echo 'asdfsdafsadfas'|grep ".*" #表示任意匹配,贪婪匹配:
asdfsdafsadfas
2、grep -r 遍历目录: 前面紫色的表示所在目录(后面带冒号) 红色表示过滤的文字:
[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
2、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
3、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