文本处理工具和正则表达式


基本正则表达式元字符
三剑客(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(统计连接状态)

  1. [:space:] ??

相关