linux命令——grep


grep

用于查找文件里符合条件的字符串。

常用选项

–after-context=<显示行数>

-A <显示行数> , 除了显示符合范本样式的那一列之外,并显示之后的指定行

–before-context=<显示行数>

-B <显示行数> , 除了显示符合范本样式的那一列之外,并显示之前的指定行

–count

-c 计算符合样式的列数

–context=<显示行数>或-<显示行数>

-C<显示行数> , 相当于-A -B,前后行都显示

–regexp=<范本样式>

-e<范本样式> ,

-E

将样式为延伸的正则表达式来使用

-i

忽略大小写

-v

反向查找,显示不匹配的行

单引号,双引号,不加引号的区别

注:findparallel 等也适用

单引号

所见即所得,不发生变量替换

双引号

会发生变量的替换,解析命令

不加引号

不会将含空格的变量视作一个整体,一般连续的字符串、数字可用,首先替换变量,解析命令

" "号里面遇到$\等特殊字符会进行相应的变量替换

值得注意的是\|
\ 可参考 awk 中的信息
| 这个或符号,因为和管道流是用一个符号,所以使用时,无论是在 " ",还是' ',都要使用转义符\:
"\|"'\|'

value1=asd
value2=dsa
cat $file | grep \"${value1}\""\|"\"$value2\"  # 搜索字符串 "asd" 或 "dsa"

# 或者使用 -E, \| 就不用加引号了
cat $file | grep -E \"${value1}\"\|\"$value2\"

特殊字符

符号 含义 举例
^ 开始标记 “^abc”满足的例子abc、abcd
^ 非(在[]内) “[^abc]“满足的例子:ddd、mpd
$ 结束标记 ”abc$”满足的例子abc、mmabc
. 任意字符 “a.c”满足的例子abc、fapcc
< 匹配单词开始 “<abc”满足的例子abc、abcd
> 匹配单词结束 “abc>”满足的例子abc、pmrabc
| “AAA|BBB”满足的例子AAA、BBB

范围

符号 含义 举例
? 匹配前一个字符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

标准字符类

字符类 释义
[: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:] 空白字符,等价于[trnvf]
[:punct:] 标点符号
[:cntrl:] ASCII控制码,包括字符0~31以及127

实例

匹配 \t \n 等符号

# grep 其他字符$'\t' file
grep test$'\t' test.file.txt

文章作者: 梁绍波
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梁绍波 !
评论
  目录