文本三剑客: grep seq awk
正则表达式 文件内容
通配符 文件名
基本正则表达式 BRE
扩展正则表达式 ERE
元字符分类: 字符匹配 匹配次数 位置锚定 分组
man 7 regex
[wang] w a n g
[^wang]
[0-9]
[[:digit:]]
. 任意一个字符 grep “r…t” /etc/passwd
[] 范围内的任意单个字符 [wang] [0-9] grep [^a-z] /etc/passwd 与grep -v 有区别
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 任意大小写字母
[:lower:] 小写字母 [:upper] 大写字母
[:blank:] 空格 和 制表符
[:space:] 水平和垂直的空白字符 比blank 包含的范围广
[:cntrl:] 不可打印的控制字符 退格 删除 警铃
[:digit:] 十进制数字 [:xdigit] 十六进制数字
[:graph:] 可打印非空白字符
[:print:] 可打印字符
[:punct] 标点符号
[[:digit:].] 等价 [0-9.] 放在中括号内 小点就表示小点不是任意字符
匹配次数:
- 匹配前面的字符任意次 包括0次 贪婪模式:尽可能长的匹配.
与通配符意思 截然不同,任意长度的任意的字符
.* 任意长度的任意字符
? 匹配其前面的字符0次或1次
+匹配其前面的字符至少一次
{n} 匹配前面的字符n次
{n,m} 匹配前面的字符n次到m次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次
grep “go+gle” f1
grep “go?gle” f1
grep “g.*gle” f1
grep “go{12}gle” f1
ifconfig eth0| grep -o “[0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3}”|head -1
ifconfig eno49|grep “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”
ifconfig eno49|grep -o “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”|head -n1 取IP地址
ifconfig eth0|grep -o “[0-9]{1,3}.[:0-9]{1,3}.[[:digit:]]{1,3}.[[:digit:]]{1,3}”|head -1
cat /etc/passwd|grep “^root” 以root开头
cat /etc/passwd|grep “bash" 以bash结尾
grep -v "^” f1 查看非空行
cat /etc/fstab|grep -v “^#”|grep -v “^$” 以非#开头的行
位置锚定
^ 行首锚定 用于模式最左侧
$ 行尾锚定 用于模式最右侧
^PATTERN$ 匹配整行
^$ 空行
[1]*$ 空白行
< 或 \b 词首锚定 用于单词模式的左侧
> 或 \b 词尾锚定 用于单词模式的左右侧
<PATTERN> 匹配真个单子
grep -v “^$” f1 排除空行
grep “^/dev/” df|tr -s " " “:”|cut -d: -f5|cut -d% -f1|sort -n|tail -n1
–到分组这儿了 听不下去了
分组后向引用 再次调用前面的分组
grep “(abc).(xyz).\1” f1
grep “(abc).(xyz).\2” f1
grep “^(a|b)” /etc/passwd 以a开头或b开头 斜线转义竖线
ifconfig eht0|grep -o “([0-9]{1,3}.){3}[0-9]{1,3}”|head -1
[:space:] ↩︎




