前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这些 grep 常用技巧你都会吗?

这些 grep 常用技巧你都会吗?

作者头像
老麦
发布2023-05-25 10:46:02
1.2K0
发布2023-05-25 10:46:02
举报
文章被收录于专栏:Go与云原生Go与云原生
grep 命令的常用技巧

状态: 未更新

原文链接: https://typonotes.com/posts/2023/03/27/linux-command-grep/

在Linux和Unix操作系统中,grep是一种在文本文件中搜索字符串的命令行工具。以下是grep命令的一些常用技巧:

  1. 基本用法:在命令行中输入 grep 关键词 文件名 即可搜索包含该关键词的行。例如:
代码语言:javascript
复制
grep hello myfile.txt
  1. 忽略大小写:使用 -i 选项可以忽略大小写,这样搜索时不区分大小写。例如:
代码语言:javascript
复制
grep -i hello myfile.txt

  1. 显示行号:使用 -n 选项可以显示匹配行的行号。例如:
代码语言:javascript
复制
grep -n hello myfile.txt

  1. 显示匹配行之前/之后的行数:使用 -A-B 选项可以分别显示匹配行之后和匹配行之前的指定行数。例如:
代码语言:javascript
复制
grep -A 2 hello myfile.txt
grep -B 1 hello myfile.txt

  1. 显示匹配行周围的行数:使用 -C 选项可以同时显示匹配行之前和之后的指定行数。例如:
代码语言:javascript
复制
grep -C 1 hello myfile.txt

  1. 排除匹配的行:使用 -v 选项可以排除匹配的行。例如:
代码语言:javascript
复制
grep -v hello myfile.txt

  1. 限制边界搜索:使用 -w 选项可以限制搜索的单词边界。例如:
代码语言:javascript
复制
grep -w hello myfile.txt

在这个例子中,如果我们使用 grep hello myfile.txt ,那么搜索结果将包含包含 hello 子字符串的行,例如 hello worldhelloworld 等。但是,如果我们使用 grep -w hello myfile.txt ,那么搜索结果将仅包含包含单词 hello 的行,例如 hello world ,而不包括 helloworld

grep 使用 Perl 正则表达式

使用 -P 选项可以让grep使用Perl正则表达式而不是基本的正则表达式。Perl正则表达式更强大,可以支持更多的特性,例如非贪婪匹配和后向引用。例如:

代码语言:javascript
复制
grep -P '\d{3}-\d{2}-\d{4}' myfile.txt

这个例子使用了Perl正则表达式,在文本文件中搜索包含美国社会保险号码的行。正则表达式 \d{3}-\d{2}-\d{4} 表示一个三位数,一个短横线,两个两位数和一个短横线,组成了一个美国社会保险号码的格式。

以下是一些常用的Perl正则表达式案例:

  • 匹配任何字符:.(句点)代表任何字符。例如,grep -P 'a.c' myfile.txt 将匹配任何包含"a"、"c"之间任意一个字符的行。
  • 匹配数字:\d代表任何数字字符。例如,grep -P '\d+' myfile.txt 将匹配任何包含一个或多个数字的行。
  • 匹配字母:\w代表任何字母字符(包括数字和下划线)。例如,grep -P '\w+' myfile.txt 将匹配任何包含一个或多个字母字符的行。
  • 匹配空白字符:\s代表任何空格字符(包括空格、制表符和换行符)。例如,grep -P '\s+' myfile.txt将匹配任何包含一个或多个空格字符的行。
  • 匹配行首和行尾:^代表行首,代表行尾。例如,grep -P '^hello' myfile.txt将匹配任何以"hello"开头的行,而grep -P 'world
  • 匹配重复字符:+代表一个或多个重复字符,``代表零个或多个重复字符,?代表零个或一个重复字符。例如,grep -P 'bo+s' myfile.txt将匹配任何包含"bos"、"boos"、"boooos"等的行,而grep -P 'colou?r' myfile.txt将匹配任何包含"color"或"colour"的行。
  • 匹配字符集合:[]代表一个字符集合。例如,grep -P '[aeiou]' myfile.txt将匹配任何包含元音字母的行,而grep -P '[^aeiou]' myfile.txt将匹配任何不包含元音字母的行。
  • 匹配特定次数的字符:{n}表示匹配n个重复字符,{n,}表示匹配n个或更多重复字符,{n,m}表示匹配n到m个重复字符。例如,grep -P 'o{2}' myfile.txt将匹配任何包含两个连续的"o"的行,而grep -P 'o{2,}' myfile.txt将匹配任何包含两个或更多连续的"o"的行。

匹配字母:\w代表任何字母字符(

Grep 使用 Perl 正则表达式案例:

  • 匹配任何字符:.(句点)代表任何字符。例如,grep -P 'a.c' myfile.txt 将匹配任何包含"a"、"c"之间任意一个字符的行。
  • 匹配数字:\d代表任何数字字符。例如,grep -P '\d+' myfile.txt 将匹配任何包含一个或多个数字的行。
  • 匹配字母:\w代表任何字母字符(包括数字和下划线)。例如,grep -P '\w+' myfile.txt 将匹配任何包含一个或多个字母字符的行。
  • 匹配空白字符:\s代表任何空格字符(包括空格、制表符和换行符)。例如,grep -P '\s+' myfile.txt将匹配任何包含一个或多个空格字符的行。
  • 匹配行首和行尾:^代表行首,代表行尾。例如,grep -P '^hello' myfile.txt将匹配任何以"hello"开头的行,而grep -P 'world
  • 匹配重复字符:+代表一个或多个重复字符,``代表零个或多个重复字符,?代表零个或一个重复字符。例如,grep -P 'bo+s' myfile.txt将匹配任何包含"bos"、"boos"、"boooos"等的行,而grep -P 'colou?r' myfile.txt将匹配任何包含"color"或"colour"的行。
  • 匹配字符集合:[]代表一个字符集合。例如,grep -P '[aeiou]' myfile.txt将匹配任何包含元音字母的行,而grep -P '[^aeiou]' myfile.txt将匹配任何不包含元音字母的行。
  • 匹配特定次数的字符:{n}表示匹配n个重复字符,{n,}表示匹配n个或更多重复字符,{n,m}表示匹配n到m个重复字符。例如,grep -P 'o{2}' myfile.txt将匹配任何包含两个连续的"o"的行,而grep -P 'o{2,}' myfile.txt将匹配任何包含两个或更多连续的"o"的行。

grep 在 shell 中的条件判断

grep 的搜索结果, 找到就是 成功 , 没找到就是 失败, 因此可以直接使用其作为条件语句。

通常, 在使用 if 条件判断的时候, 会使用变量 RET 捕捉执行结果, 并对 RET 的值进行判断。

代码语言:javascript
复制
#!/bin/bash
grep abc 111.txt > /dev/null
RET=$?

if [[ $RET == 0 ]]; then
    {
        echo "found"
    }
else
    {
        echo "not found"
    }
fi

bash 中, 可以直接使用 逻辑 表达式, 整个结构看起来更简单。

代码语言:javascript
复制
#!/bin/bash
grep abc 111.txt > /dev/null && {
 echo "found"
} || {
 echo "not found"
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • grep 使用 Perl 正则表达式
  • Grep 使用 Perl 正则表达式案例:
  • grep 在 shell 中的条件判断
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档