文本处理工具和正则表达式
基本正则表达式元字符
三剑客(grep) grep "root" /etc/passwd
字符匹配
. 表示任意字符,可以是一个汉字。 echo a.c |grep a.b(显示·需要用\转译)
[]匹配指定范围内的任意字符 '[liujinxi]'[0-9]' ls | grep '[liujinxi].txt'
[^]匹配指定范围外的任意字符 '[^liujinxi]' ls |greo '[^liujinxi].txt'
[:lower:] 过滤小写字符 ls |grep 'file[[:lower:]].txt'
[:alnum:]字母和数字
[:alpha:]代表任何英文大小写字符
[:upper:]大写字母
匹配次数
- 贪婪模式 echo gooogle | grep 'go'(匹配到gooog所有)
?懒惰模式 echo gooogle | greo 'go?'(只匹配到gog)
. 匹配到任意字符
+ echo google | grep 'go+'(匹配一个以上)
{n} ehco google | grep '{6,}'gle 匹配到几到几
标识位置
^ 标识左侧行首锚定 grep '^root' /etc/passwd '[#]'行首去除#开头
$ 标识结尾锚定 grep 'bash$' /etc/passwd
[:space:]空白字符 grep '[1]*$' test.txt -n (去头去尾取空白) cat -A test.txt -n (-n显示行号)(-A显示换行或者空格)
< 显示单词头 \b (相同)
> 显示单子尾 \b(相同)
获取ifconfig里面的ip地址 ifconfig ens33 | grep netmask | grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | head -1
ifconfig ens33 | grep -i mask | grep -o '([0-9]{1,3}.){3}[0-9]{1,3}' |head -1
分组
echo abcabcabc | grep '(abc){3}'
echo 1 | grep '1|2'(或1 或2)
或和分组
echo 1abc |grep '(1|2)abc'
扩展正则表达式
获取ifconfig里面的ip地址 ifconfig ens33 |grep -i mask |grep -oE '([0-9]{1,3}.){3}[0-9]{1,3}'|head -1
取反
grep -v '^#' /cet/paswwd(过滤到#开头的行)
ss -nta(统计连接状态)
[:space:] ??