egrep "0+" oldboy.txt 1次或1次以上 >=1
egrep "0*" oldboy.txt 0次或0次以上 >=0
[root@znix ~]# egrep "0+" oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@znix ~]# egrep -o "0+" oldboy.txt
000
00000
[root@znix ~]# grep -o "[A-Z]" oldboy.txt
I
I
I
O
L
D
B
O
Y
[root@znix ~]# egrep -o "[A-Z]+" oldboy.txt
I
I
I
OLDBOY
[root@znix ~]# egrep -o "[A-Za-z]+" oldboy.txt
I
am
oldboy
teacher
表示找其中的一个或者是另外一个。
[root@znix ~]# egrep "oldboy|oldbey" oldboy.txt -o
oldboy
oldboy
oldbey
找/etc/services 中的两个端口
[root@znix ~]# egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
找其中的A或者B或者C。
[root@znix ~]# egrep "A|B|C" oldboy.txt
my god ,i am not oldbey,but OLDBOY!
找到12或者56替换成空。
[root@znix ~]# echo 123456|sed -r 's#12|56##g'
34
小括号里面的内容是一个整体,相当于是一个字符
[root@znix ~]# egrep "oldb(o|e)y" oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
my god ,i am not oldbey,but OLDBOY!
sed -r 使用扩展正则
[root@znix ~]# echo 123456|sed -r 's#..(..)..#\1#g'
34
点表示任意一个字符,\2表示第二个括号。
[root@znix ~]# echo 123456|sed -r 's#(.).(..).(.)#\2#g'
34
0{n,m} 数字0连续出现了至少n次,最多m次
[root@znix ~]# egrep "[a-z]{3,6}" oldboy.txt
I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not oldbey,but OLDBOY!
[root@znix ~]# egrep "[a-zA-Z]{3,6}" oldboy.txt
I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not oldbey,but OLDBOY! [root@znix ~]#
0{3,6} >=3 <=6
0{3} ==3
0{3,} >=3
0{,6} >=0 <=6
前一个字符连续出现了 0次或1次
[root@znix ~]# cat a.log
good
gd
god
goood
[root@znix ~]# egrep "gd|god" a.log
gd god
[root@znix ~]# egrep "go?d" a.log
gd god
^ 以……开头
$ 以……结尾
^$ 空行
.* 所有
[abc] 表示abc
[a-z] 表示a到z
[A-Z] 表示A-Z
[^abc] 表示排除abc
+ 连续出现 1次或1次以上
| 或者
() 小括号里面的内容是一个整体,相当于是一个字符
{} 0{n,m} 数字0连续出现了至少n次,最多m次
? 前一个字符连续出现了 0次或1次
1)先定位 取出第二行
2)取出ip地址
[root@znix ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:A8:E4:14
inet addr:10.0.0.201 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea8:e414/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:86884 errors:0 dropped:0 overruns:0 frame:0
TX packets:74978 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14324203 (13.6 MiB) TX bytes:26220378 (25.0 MiB)
用sed命令,将其中不需要显示的,逐步替换。
[root@znix ~]# ifconfig eth0|sed -n '2p'|sed 's#^.*dr:##g'|sed 's# .*$##g'
10.0.0.201
反向替换,使用()把ip地址保护起来,\1方向选择,显示出来ip。
[root@znix ~]# ifconfig eth0|sed -nr '2s#^.*dr:(.*) Bc.*$#\1#gp'
10.0.0.201
简写?
[root@znix ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*dr:(.*)Bc.*$#\1#g'
10.0.0.201
使用把[^0-9.]之外的替换成空格,使用awk取出第一列。
[root@znix ~]# ifconfig eth0|sed -n '2s#[^0-9.]# #gp'|awk '{print $1}'
10.0.0.201
awk 指定分隔符,将空格和分号都定为分隔符,然后取列。
[root@znix ~]# ifconfig eth0|sed -n '2p'|awk -F "[ :]+" '{print $4}'
10.0.0.201
使用反向引用,保护要取出的内容。
[root@znix ~]# stat /etc/services |sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'
644
两个sed 将不需要的东西替换为空。
[root@znix ~]# stat /etc/hosts |sed -n '4s#^.*(0##gp'|sed 's#/.*$##g'
644
[^0-7] 除了0到7以外的替换成空格
[root@znix ~]# stat /etc/hosts |sed -n '4s#[^0-7]##gp'
064400
[root@znix ~]# stat /etc/hosts|sed -nr '4s#[^0-7]+# #gp'
0644 0 0
&& 并且 前面的执行对了执行后面
|| 或者 前面命令执行失败了再执行后面的
>> 追加输出重定向
> 标准输出重定向
/ 根 路径的分隔符
$ 取变量的内容
. 当前目录
.. 当前目录的上一级目录
~ 家目录
| 管道
! 取反 find awk
# 注释
* {} 找出文件
^
$
^$
.*
[abc] 一个整体 a或b或c
正则表达式认为只要是在中括号里面的就是一样的.
[^abc] 出a或b或c之外