grep命令

    技术2024-08-21  70

    grep文本过滤

    常用参数 通配符示例

    linux三剑客之一,文本正则表达式搜索工具,并打印匹配内容,支持多文件查找

    常用参数

    格式:grep [选项] [模式] [文件] -c 只输出匹配行数量 -e 支持多个关键字搜索 -h 查询多文件不显示文件名 -i 搜索时忽略大小写 -l 只列出符合匹配的文件名,不显示具体的匹配行 -n 输出匹配行并显示行号 -o 只显示匹配到的字符串 -q 只输出搜索状态,0为成功,1为未搜索到满足的行,2为出现错误 -r 递归搜索不仅搜索当前目录,还搜索子目录 -v 显示不包含匹配文本的所有行 -w 搜索都是整词,不能是单词的一部分,含有字符串的整行都输出 -x 整行匹配,只含有被搜索的字符串的行 -A 显示匹配的字符串所在行及其后n行 -B 显示匹配的字符串所在行及其前n行 -C 显示匹配的字符串所在行及其前后n行 -E 支持扩展的正则表达式 -F 不支持正则表达式,按照字符串字面意思匹配

    通配符

    ^ 行首定位符 /^my/ 匹配所有以my开头的行 $ 行尾定位符 /my$/ 匹配所有以my结尾的行 . 匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行 * 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行 [] 匹配指定字符组内的任一字符 /[Mm]y/ 匹配包含My或my的行 [^] 匹配不在指定字符组内的任一字符 /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行 & 保存查找串以便在替换串中引用 s/my/**&**/ 符号&代表查找串。my将被替换为**my** \< 词首定位符 /\<my/ 匹配包含以my开头的单词的行 \> 词尾定位符 /my\>/ 匹配包含以my结尾的单词的行 x\{m\} 连续m个x /9\{5\}/ 匹配包含连续5个9的行 x\{m,\} 至少m个x /9\{5,\}/ 匹配包含至少连续5个9的行 x\{m,n\} 至少m个,但不超过n个x /9\{5,7\}/ 匹配包含连续5到7个9的行

    示例

    grep keyword test.txt //输出含关键字”keyword”的行 grep "keyword root" test.txt //关键字中含有空格需要用双引号 grep keyword test.txt word.txt //多文件查找含关键字的行,相似文件名可用通配符 grep -c keyword test*.txt //输出文件中含关键字的行数量,不输出内容,多文件会显示文件对应名称 grep -e keyword -e keyword test.txt //一行中多个关键字匹配,关键字之间或关系 grep -h keyword test*.txt //输出内容,但不显示对应文件的名称 grep -n keyword test*txt //输出多文件中含关键字的内容,并显示在对应文件中的行号 grep -v "hello" test.txt //输出不含hello的行 grep -vc keyword test.txt //输出文件中不含关键字的行数量 grep -i keyword test.txt //不区分大小写进行匹配,输出对应行 grep -l keyword test.txt //只输出含关键字的文件名,不输出内容 grep -s keyworde test.txt //不输出因关键字或文件不存在出现的错误信息 grep keyword * //对当前目录下的所有文件进行匹配关键字 grep -r file * //grep默认只对当前目录搜索,r选项可以对当前目录和子目录搜索 grep -w keyword test.txt //搜索整词所在的行 grep "\<keyword\>" //精确匹配,等价上面 grep -x "keyword,root,tty" text.txt //整行进行匹配 grep -q keyword test.txt //不输出任何结果,以退出状态表示搜索成功,状态0为成功 grep ^- test.txt //匹配行首为-的行 grep -n [Rr]pom test.txt //不区分关键字中的r大小写 grep '\-\{3}\' test.txt //匹配开头-重复3次的行 grep -o "keyword" test.txt //只显示keyword字符串 grep -A 2 "keyword" test.txt //显示匹配关键字后2行 grep -B 2 "keyword" test.txt //显示匹配关键字前2行 grep -C 2 "keyword" test.txt //显示匹配关键字的前后2行 grep -E (net){3} test.txt //扩展正则表达式 grep -Eo "[0-9]+" test.txt ifconfig | grep -o "[0-9.]\{7,\}" | head -n 1 //只显示0-9或.匹配的字符段,数字和.组成7个段 ifconfig | grep -o "[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}" df | grep "/dev/sd" | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]\+" grep "\(net\)\{3\}" //整词net出现三次netnetnet grep "\(net\)\{3\}.*\(len\)\+\1" //net出现3次中间任意长度的任意字符len至少出现1次,\1为后向引用前面第一次匹配串net对应结果 grep "^\(.*\):.*\1&" //匹配前后字符对应相同的行 grep "a\| b" //符号\|表示或
    Processed: 0.026, SQL: 9