linux三剑客(grep、sed、awk)基本使用

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

准备

作为一个经常在服务器上游走的后端,需要熟悉不少命令行操作。其中,grep、sed、awk号称"linux三剑客",使用频繁,功能强大,本文通过一个实例演示下基本用法。首先准备一个文本文件,命名为text.txt,内容如下:

cat text.txt
1     province    省份  青海省
2     domain  域名或者ip  tianfengyinlou.cn
3     subject_no  主体备案号   青ICP备11000289号
4     addr    注册地址   青海省西宁市城中区南关街138号
5     check_time  备案时间, 时间对象  2011-06-23 16:38:00
6     update_time 更新时间, 毫秒级时间戳    1607414120745
7     site_no 网站备案/许可证号   青ICP备11000289号-2
8     site_url    站点/网站首页网址   www.tianfengyinlou.cn
9     comp_name   主办单位名称(公司名称)    西宁天丰银楼金银珠宝有限公司

grep

首先,最简单的是grep。经常用来过滤查看日志。对于grep需要知道如下几个常用的命令选项:

-n

额外输出行号。例如过滤出每一行包含"青"的记录:

grep -n "青" text.txt                                                                                              
1:1     province    省份  青海省
3:3     subject_no  主体备案号   青ICP备11000289号
4:4     addr    注册地址    青海省西宁市城中区南关街138号
7:7     site_no 网站备案/许可证号   青ICP备11000289号-2

-v

排除匹配的行。例如排除包含"青"的行记录:

grep -v '青' text.txt                                                                                              
2     domain  域名或者ip  tianfengyinlou.cn
5     check_time  备案时间, 时间对象  2011-06-23 16:38:00
6     update_time 更新时间, 毫秒级时间戳    1607414120745
8     site_url    站点/网站首页网址   www.tianfengyinlou.cn
9     comp_name   主办单位名称(公司名称)    西宁天丰银楼金银珠宝有限公司

-E

支持扩展正则匹配。grep的时候,我们可以按照正则表达式来进行匹配,但在需要扩展正则匹配时,要通过-E指定才能生效。常见的或操作,比如筛选包含"青海省"或者"青ICP"的行记录,不指定-E是无法获得想要的结果的。

grep -E '青海省|青ICP' text.txt                                                                                    
1     province    省份  青海省
3     subject_no  主体备案号   青ICP备11000289号
4     addr    注册地址    青海省西宁市城中区南关街138号
7     site_no 网站备案/许可证号   青ICP备11000289号-2

-l

只输出有匹配行的文件名。有时候,我们并不需要输出匹配的行记录,仅仅只是需要知道匹配到了行记录的文件名:

grep -l 青 text.txt                                                                                         
text.txt

-R

递归匹配目录中的文件内容。有时候,在一个目录中我们并不知道哪个文件内容包含我们想要的结果,此时,可以查找整个目录,输出匹配的文件名以及行记录:

grep -R 青海 ./DevMisc
# ... 
./DevMisc/linux三剑客.md:1     province     省份                   青海省
./DevMisc/linux三剑客.md:4     addr         注册地址                青海省西宁市城中区南关街138号
./DevMisc/text.txt:1     province    省份  青海省
./DevMisc/text.txt:4     addr    注册地址    青海省西宁市城中区南关街138号

结合-l参数就可以知道一个目录中有哪些文件包含了匹配项:

grep -Rl 青 ./DevMisc                                                                                                  
./DevMisc/linux三剑客.md
./DevMisc/text.txt

-A

通过-A(after)指定输出匹配行后的额外行数。例如,想要额外输出包含"青"的行记录后一行,可以指定-A1:

grep -A1 青 text.txt                                                                                               
1     province    省份  青海省
2     domain  域名或者ip  tianfengyinlou.cn
--
3     subject_no  主体备案号   青ICP备11000289号
4     addr    注册地址    青海省西宁市城中区南关街138号
5     check_time  备案时间, 时间对象  2011-06-23 16:38:00
--
7     site_no 网站备案/许可证号   青ICP备11000289号-2
8     site_url    站点/网站首页网址   www.tianfengyinlou.cn

-B

通过-B(before)指定输出匹配行前的额外行数。例如,想要额外输出包含"青"的行记录前一行,可以指定-B1:

grep -B1 青 text.txt                                                                                               
1     province    省份  青海省
--
2     domain  域名或者ip  tianfengyinlou.cn
3     subject_no  主体备案号   青ICP备11000289号
4     addr    注册地址    青海省西宁市城中区南关街138号
--
6     update_time 更新时间, 毫秒级时间戳    1607414120745
7     site_no 网站备案/许可证号   青ICP备11000289号-2

-C

通过-C指定输出匹配行前后的额外行数。例如,想要额外输出包含"青"的行记录前后各一行,可以指定-C1:

grep -C1 青 text.txt                                                                                               
1     province    省份  青海省
2     domain  域名或者ip  tianfengyinlou.cn
--
--
2     domain  域名或者ip  tianfengyinlou.cn
3     subject_no  主体备案号   青ICP备11000289号
4     addr    注册地址    青海省西宁市城中区南关街138号
5     check_time  备案时间, 时间对象  2011-06-23 16:38:00
--
--
6     update_time 更新时间, 毫秒级时间戳    1607414120745
7     site_no 网站备案/许可证号   青ICP备11000289号-2
8     site_url    站点/网站首页网址   www.tianfengyinlou.cn

sed

查找

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值