Linux学习笔记之正则表达式(grep,sed,awk)

grep

[a-z]
[A-Z]
[0-9]
. 单个任意字符
* 前面字符重复的次数>=0
+ 前面字符重复的次数>=1
?前面字符重复的次数 0 or 1
{n,m} 前面字符重复的次数n到m次

连用:[A-Z][0-9]

grep '[0-9]' /etc/passwd 查找含一位数的行
grep '[0-9][0-9][0-9]' /etc/passwd 查找含三位数的行
grep ':[0-9][0-9][0-9]:' /etc/passwd 查找含:三位数:格式的行
grep ':[0-9][0-9][0-9]:7' /etc/passwd 查找含:三位数:7格式的行

grep '^r..n$' /etc/passwd 查找含从r开始到n结束并且中间有两个任意字符的行
grep '^r.*n$' /etc/passwd 查找含从r开始到n结束并且中间有任意个字符的行(*作用于.上)

grep 'o\{2\}' /etc/passwd 查找含o出现两次的行,这里{和}要通过\转义

sed 

sed '匹配条件/执行的动作' /etc/passwd
或者
cat /etc/passwd | sed '匹配条件/执行的动作'
替换:sed 's/old/new/g' 找到含old的行并整行替换成new,不加g的话只替换每行第一次出现的位置
sed实例:取IP:ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | sed 's/inet addr://g' |sed 's/Bcast.*//g'

awk


awk -F: '{print $0}' /etc/passwd  以:为分隔符,$0表示完整的行,$1表示取第一列,$2第二列…

你可能感兴趣的:(Linux)