精华内容
下载资源
问答
  • linux grep 正则表达式.pdf
  • grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊...

    正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理。本文以grep为例来讲解正则表达式。

    grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。

    扩展正则表达式就是在基本正则表达式的基础上,增加了一些元数据。

    Linux下面正则表达式博大精深,上文支持总结了最常用的部分,如果熟练掌握的上面部分的正则表达式基本上可以满足日常使用了。

    另外Linux很多命令支持正则表达式,比如

    ** linux

    grep正则表达式元字符集:

    ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。

    $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

    . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

    * 匹配零个或多个先前字符 如:'grep'匹配所有一个或多个空格后紧跟grep的行。 .一起用代表任意字符。

    [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

    [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

    .. 标记匹配字符,如'love',love被标记为1。

    \ 锚定单词的开始,如:'\匹配包含以grep开头的单词的行。

    > 锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。

    x{m} 重复字符x,m次,如:'0{5}'匹配包含5个o的行。

    x{m,} 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

    x{m,n}重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。

    \w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

    \b 单词锁定符,如: '\bgrep\b'只匹配grep。

    常用的 grep 选项有:

    -c 只输出匹配行的个数。

    -i 不区分大小写(只适用于单字符)。

    -h 查询多文件时不显示文件名。

    -l 查询多文件时只输出包含匹配字符的文件名。

    -n 显示匹配行及行号。

    -s 不显示不存在或无匹配文本的错误信息。

    -v 显示不包含匹配文本的所有行。

    -V 显示软件版本信息

    使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。

    关于匹配的实例:

    grep -c "48" test.txt 统计所有以“48”字符开头的行有多少

    grep -i "May" test.txt 不区分大小写查找“May”所有的行)

    grep -n "48" test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)

    grep -v "48" test.txt 显示输出没有字符“48”所有的行)

    grep "471" test.txt 显示输出字符“471”所在的行)

    grep "48;" test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行

    grep "48[34]" test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)

    grep "^[^48]" test.txt 显示输出行首不是字符“48”的行)

    grep "[Mm]ay" test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)

    grep "K…D" test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)

    grep "[A-Z][9]D" test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行

    grep "[35]..1998" test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行

    grep "4{2,}" test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行

    grep "9{3,}" test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行

    grep "9{2,3}" test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行

    grep -n "^$" test.txt 显示输出空行的行号

    ls -l |grep "^d" 如果要查询目录列表中的目录 同:ls -d *

    ls -l |grep "^d[d]" 在一个目录中查询不包含目录的所有文件

    ls -l |grpe "^d…..x..x" 查询其他用户和用户组成员有可执行权限的目录集合

    展开全文
  • Linux处理正则表达式的主要程序是grepgrep搜索与正则表达式匹配的行,并将结果输送至标准输出。grep匹配模式grep按下述方式接受选项和参数(其中,regex表示正则表达式)grep [options] regex [files]其中options...

    正则表达式是一种符号表示法,用于识别文本模式。Linux处理正则表达式的主要程序是grep。grep搜索与正则表达式匹配的行,并将结果输送至标准输出。

    grep匹配模式

    grep按下述方式接受选项和参数(其中,regex表示正则表达式)

    grep [options] regex [files]

    其中options主要为下表:

    选项含义功能描述

    -iignore case忽略大小写

    -vinvert match不匹配匹配的

    -lfile-with-match输出匹配的文件名

    -Lfile-without-match输出不匹配的文件名

    -ccount输出匹配的数目(行数)

    -nnumber输出匹配行的同时在前面加上文件名及在文件名中的行数

    -hno-filename抑制文件名的输出

    举例说明

    假设有三个文件del1、del2、del3三个文件的内容如下

    e6d554967fd6d93f1797582b7fd80776.png

    例子

    ac636031dbf120757a5a9e1ccdf992ea.png

    特殊字符

    符号含义 举例

    ^开始标记 "^abc"满足的例子abc、abcd

    ^非(在[]内) "[^abc]"满足的例子:ddd、mpd

    $结束标记 ”abc$”满足的例子abc、mmabc

    .任意字符 "a.c"满足的例子abc、fapcc

    \< 匹配单词开始 "\匹配单词结束 "abc\>"满足的例子abc、pmrabc

    |或 "AAA|BBB"满足的例子AAA、BBBpp

    范围

    符号含义 举例

    ?匹配前一个字符0或1次 "abc?"满足的例子ab、mabcd

    *匹配前一个字符≥0次 "abc*"满足的例子abbb、abcdk

    +匹配前一个字符≥1次 "abc+"满足的例子abcd、abcccdd

    {}{m}、{m,n}、{m,}、{,n}分别为匹配前一个字符m次、m到n次、≥m次、≤n次 "abc\{3,5\}"满足的例子abcccc、abcccccc

    [][]内如果不是范围,选其一;是范围的话,范围内选其一 "m[abc]p"满足的例子acpd;m[1-9]p满足的例子m8pp

    ()将候选的所有元素放在()内,用|隔开 "a(1|2|3)bc"满足的例子a1bc、mba3bcd

    注意:{}在郑则表达式中需要转移,而{}()不需要。

    注意理解{}范围的例子:

    433ed7254040d13e89e984d96c0587f7.png

    标准字符类

    字符类释义

    [:alnum:]字母和数字,与[A-Za-z0-9]等价

    [:word:][:alnum:]加上下划线_

    [:alpa:]字母,与[A-Za-z]等价

    [:digit:]数字,与[0-9]等价

    [:xdigit:]十六进制字符,与[0-9A-Fa-f等价]

    [:blank:]空格和制表符

    [:graph:]可见字符,靠扩33~126

    [:lower:]小写字母

    [:upper:]大写字母

    [:print:]可打印字符

    [:space:]空白字符,等价于[\t\r\n\v\f]

    [:punct:]标点符号

    [:cntrl:]ASCII控制码,包括字符0~31以及127

    展开全文
  • 本文以grep为例来讲解正则表达式。 grep命令 功能:输入文件的每一行中查找字符串。 基本用法: grep [-acinv] [–color=auto] [-A n] [-B n] ‘搜寻字符串’ 文件名 参数说明: -a:将二进制文档以文本方式处理 -c...
  • grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,本文主要给大家分享Linux grep正则表达式的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家。grep简介grep 是一种强大的...

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,本文主要给大家分享Linux grep与正则表达式的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家。

    grep简介

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。

    grep使用方式

    使用方式:

    grep [OPTIONS] PATTERN [FILE...]grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    常用选项:

    --color=auto:对匹配到的文本着色后进行高亮显示;

    -i:忽略字符的大小写

    -o:仅显示匹配到的字符串

    -v:显示不能被模式匹配到的行

    -E:支持使用扩展的正则表达式

    -q:静默模式,即不输出任何信息

    -A #:显示被模式匹配的行及其后#行

    -B #:显示被模式匹配的行及其前#行

    -C #:显示被模式匹配的行及其前后各#行

    注:使用grep匹配时需使用双引号引起来(单引号为强引用),防止被系统误认为参数或者特殊命令而报错。

    扩展grep使用方式

    使用方式:egrep [OPTIONS] PATTERN [FILE...]

    grep -E [OPTIONS] PATTERN [FILE...]

    -i:忽略字符的大小写

    -o:仅显示匹配到的字符串本身

    -v:显示不被模式匹配到的行

    -q:静默模式,即不输出任何信息

    -A #:显示被模式匹配的行及其后#行

    -B #:显示被模式匹配的行及其前#行

    -C #:显示被模式匹配的行及其前后各#行

    -G:支持基本正则表达式

    grep正则表达式元字符

    ‘^‘: 锚定行首

    ‘$': 锚定行尾

    ‘.‘: 匹配任一一个字符

    ‘*': 匹配零个或多个先前字符

    ‘\?‘:匹配其前面的字符0次或者1次;

    ‘\+':匹配其前面的字符1次或者多次;

    ‘\{m\}‘:匹配其前面的字符m次(\为转义字符)

    ‘\{m,n\}':匹配其前面的字符至少m次,至多n次

    ‘[]‘: 匹配一个指定范围内的字符 | ‘[^]'匹配指定范围外的任意单个字符

    ‘\'或‘\b':锚定词尾(可用\:匹配完整单词)

    ‘\(\)':将多个字符当做一个整体进行处理

    后向引用:引用前面的分组括号中的模式所匹配到的字符

    分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:

    \1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容

    \2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容...

    扩展正则表达式与正则表达式略有不同:

    '[]':依旧匹配指定范围内的任意单个字符;但是有很多特殊匹配方式。

    [:digit:] 匹配任意单个数字

    [:lower:] 匹配任意单个小写字母

    [:upper:] 匹配任意单个大写字母

    [:alpha:] 匹配任意单个字母

    [:alnum:] 匹配任意单个字母或数字

    [:punct:] 匹配任意单个符号

    [:space:] 匹配单个空格

    一些地方取消了转义字符的使用:

    ‘?‘:匹配其前面的字符0次或者1次;

    ‘+':匹配其前面的字符1次或者多次;

    ‘{m}‘:匹配其前面的字符m次(\为转义字符)

    ‘{m,n}':匹配其前面的字符至少m次,至多n次

    ():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。

    ‘|':或(注:‘C|cat'为C与cat,‘(C|c)at才是Cat与cat')

    练习题:

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次[root@localhost ~]# who | cut -d' ' -f1|uniq

    root

    2、取出最后登录到当前系统的用户的相关信息[root@localhost ~]# id `last | head -1 | cut -d' ' -f1`

    uid=0(root) gid=0(root) groups=0(root)

    3.取出当前系统上被用户当做其默认shell最多的那个shell[root@localhost ~]# cut -d':' -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d' ' -f7

    /sbin/nologin

    4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中[root@localhost ~]# sort -t':' -k3 -n /etc/passwd|tail -10|tr 'a-z' 'A-Z' >/tmp/maxusers.txt

    [root@localhost ~]# cat /tmp/maxusers.txt

    NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN

    SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN

    NGINX:X:996:994:NGINX WEB SERVER:/VAR/LIB/NGINX:/SBIN/NOLOGIN

    CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN

    POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN

    SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN

    DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH

    JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH

    EGON:X:1002:1002::/HOME/EGON:/BIN/BASH

    NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN

    5.取出当前主机的IP地址[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d' ' -f10

    192.168.0.133

    6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中[root@localhost ~]# find /etc -name '*.conf' | egrep -o "[^/]*(\.conf)$"|tr 'a-z' 'A-Z' >/tmp/etc.conf

    [root@localhost ~]# cat /tmp/etc.conf

    RESOLV.CONF

    CA-LEGACY.CONF

    FASTESTMIRROR.CONF

    LANGPACKS.CONF

    SYSTEMD.CONF

    VERSION-GROUPS.CONF

    LVM.CONF

    LVMLOCAL.CONF

    ASOUND.CONF

    LDAP.CONF

    MLX4.CONF

    RDMA.CONF

    SMTPD.CONF

    7.显示/var目录下一级子目录或文件的总数[root@localhost ~]# ls /var | wc -l

    8.取出/etc/group第三个字段数值最小的10个组的名字[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d':' -f1

    root

    bin

    daemon

    sys

    adm

    tty

    disk

    lp

    mem

    kmem

    9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test

    [root@localhost ~]# cat /tmp/etc.test

    #

    # /etc/fstab

    # Created by anaconda on Sat May 13 10:12:58 2017

    #

    # Accessible filesystems, by reference, are maintained under '/dev/disk'

    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

    #

    /dev/mapper/cl-root   /            xfs   defaults    0 0

    UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot          xfs   defaults    0 0

    /dev/mapper/cl-swap   swap          swap  defaults    0 0

    \S

    Kernel \r on an \m

    展开全文
  • linux grep 正则表达式

    2017-09-15 11:57:55
    grep正则表达式元字符集:  ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。  $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。  . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后...
    本文转自:http://www.cnblogs.com/xiaouisme/archive/2012/11/09/2762543.html
    grep正则表达式元字符集:
     ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
    $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
    . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 
    * 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
     [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 
    [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 
    \(..\) 标记匹配字符,如'\(love\)',love被标记为1。 
    \ 锚定单词的开始,如:'\匹配包含以grep开头的单词的行。 
    \> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 
    x\{m\} 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 
    x\{m,\} 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 
    x\{m,n\}重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
     \w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
     \b 单词锁定符,如: '\bgrep\b'只匹配grep。
     常用的 grep 选项有:
     -c 只输出匹配行的个数。
     -i 不区分大小写(只适用于单字符)。
     -h 查询多文件时不显示文件名。
     -l 查询多文件时只输出包含匹配字符的文件名。
     -n 显示匹配行及行号。
     -s 不显示不存在或无匹配文本的错误信息。
     -v 显示不包含匹配文本的所有行。
     -V 显示软件版本信息
     使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。

     关于匹配的实例:
     grep -c "48" test.txt 统计所有以“48”字符开头的行有多少
     grep -i "May" test.txt 不区分大小写查找“May”所有的行)
     grep -n "48" test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
     grep -v "48" test.txt 显示输出没有字符“48”所有的行)
     grep "471" test.txt 显示输出字符“471”所在的行)
     grep "48;" test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
     grep "48[34]" test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
     grep "^[^48]" test.txt 显示输出行首不是字符“48”的行)
     grep "[Mm]ay" test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
     grep "K…D" test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
     grep "[A-Z][9]D" test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
     grep "[35]..1998" test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
     grep "4\{2,\}" test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
     grep "9\{3,\}" test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
     grep "9\{2,3\}" test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
     grep -n "^$" test.txt 显示输出空行的行号
     ls -l |grep "^d" 如果要查询目录列表中的目录 同:ls -d *
     ls -l |grep "^d[d]" 在一个目录中查询不包含目录的所有文件
     ls -l |grpe "^d…..x..x" 查询其他用户和用户组成员有可执行权限的目录集合

    展开全文
  • linux grep 正则搜索某段时间内的日志

    千次阅读 2019-10-04 22:26:04
    命令: grep '时间' '日志文件名 ' 通过正则表达式匹配一段时间的日志信息, grep "2019-09-23 14:58:52,4[1-3][1-9]" logs
  • 8、通过grep使用正则表达式正则表达式:他通过一个字符串来描述、匹配一些符合某个语法规则的字符串,从而可以对这些符合语法规则的字符串,进行相应的处理。常见支持正则表达的工具如下:Grep命令族用于匹配文本行...
  •  grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊...
  • Linux系统正则表达式是字符串的标示方法, 主要的正则表达式有sed、vim、awk,当然还包括grep正则表达式。前文我们已经介绍了Linux系统正则表达式的用法,今天就来着重介绍一下Linux系统grep正则表达式。grep正则...
  • Linuxgrep正则表达式

    2021-04-13 21:39:40
    Linuxgrep正则表达式 第一类: 匹配单个字符 “.” grep "r..t" 文件名 [aA]、[a-z]、[A-Z]、[0-9] grep "r[a-z]t" 文件名 第二类: 匹配字符位置 3. " ^ " 以什么开头 grep “^root” 文件名 grep “^[ahbs...
  • grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。下面通过本文给大家分享Linux grep正则表达式的相关知识,感兴趣的朋友一起看看吧
  • Linuxgrep正则表达式相关

    千次阅读 2018-02-11 18:22:46
    任意字符,重复一次[] 代表一个字符举例: [a,b,c] 表示abc中任意一个通配符的作用是用来匹配文件名的正则表达式正则表达式是在文件中匹配符合条件的字符串的ls find cp是不支持正则表达式的但是grep awk sed支持正则...
  • 本文主要给大家介绍了关于linux系统用户管理与grep正则表达式的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 linux系统用户管理与grep正则表达式 1、复制/etc/skel目录为/home/...
  • 文章目录[隐藏]一、grep二、正则表达式1、匹配字符:2、匹配次数:3、定位4、分组三、小结一、grepgrep常用于文本搜索。通过自定义的模式(pattern),筛选出使用者需要的文本内容。除了有grep,还有egrep和fgrep。...
  • Linux处理正则表达式的主要程序是grepgrep搜索与正则表达式匹配的行,并将结果输送至标准输出。 grep匹配模式 grep按下述方式接受选项和参数(其中,regex表示正则表达式) grep [options] regex [files] 其中...
  • Linux grep正则表达式

    2020-11-03 15:40:06
    文章目录6、grep正则表达式1.自学书上的2.课件上的3.总结 6、grep正则表达式 1.自学书上的 在正则表达式中,空格和其他字符没有什么区别。 正则表达式识别的字符包括:*[]^${}\+?|(),如果要使用某个字符作为...
  • grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,462
精华内容 21,384
关键字:

linuxgrep正则

linux 订阅