在linux种有一句话,叫做一切皆文件。文件有个特点,它是个文本。它可以读、可以写,如果是二进制文件,它还能执行。这样的话,我们在使用linux的时候,多数时间都是要和各式各样文件打交道的。那么,熟悉文本的读取、编辑、筛选就是linux系统管理员的必备技能。
幸而,在linux中,有三个很牛逼的文本处理工具。它们分别是:grep、sed、awk。下面我们用三篇文章来简单讲讲他们仨。
第一个登场的,是grep。它是(global search regular expression and print out the line,全面搜索正则表达式并将其打印到命令行)的缩写。它是以行来进行搜索的,同时,以行进行输出。它可以直接使用,也可以通过管道符(“|”)来与其他命令混合使用,达到更好的切割文本的效果。
基本用法:
grep “选项“ ”模式“ 文件
其中,”选项“是指常用的几种功能,”模式“指要搜的正则表达式,文件则代表搜索对象。
下面一个一个介绍:
* 常用的一些功能选项:
-v: 显示版本号
-E: 默认模式为扩展正则表达式,相当于使用了egrep
-F: 默认模式为固定字符串列表,相当于使用了fgrep
-n: 输出行数
-v: 反向查找
-i: 忽略大小写
-o:只显示被选中的表达式,不显示整行
-w: 匹配整词,精确的单词,不是模糊匹配。单词的两边必须是非字符符号,以保证中间是一个完整的单词。
-A 行数:匹配到搜索行以及该行下面n行
-B 行数:匹配到搜索行以及该行上面n行
-C 行数:匹配到搜索行以及该行上下n行
* 常用的一些模式介绍:
‘^$’:空行
‘.‘: 任意一个字符
[xyz]: x、y、z任意一个
[[:space:]]: 空格及tab
[a-zA-Z]: 相当于[[:alpha:]]
[^123]:除了123以外的字符,这里的^和通配符里边的"^"意义完全不一样,且在正则表达式中,这些符号的意义与通配符中的意义完全不一样。如果按照通配符的标准来学习正则表达式,那就GG了~
[a-zA-Z0-9]: 相当于[[:alnum:]]
[A-Z]: 相当于[[:UPPER:]]
[a-z]: 相当于[[:lower:]]
[[:punct:]]: 相当于标点符号
下面举几个例子,来演示以下它们怎么使用:
我在/tmp下建立了一个test_file,抄了Bob Dylan的《make you feel my love》进去。我们来测试:
1) cat test_file|grep -w 'love',精准查找关键词'love'.
2) cat test_file|grep -v 'feel my love',grep不会打印带有'feel my love'的行。
3)cat test_file |grep -A 5 'love',grep会打印找到的love行,并其下边的5行一起打印。
4)cat test_file|grep -n '^$',输出空格行行数;若想去除空格行,可以使用grep -v '^$';若想去除注释行,可用egrep -v '#'。
5) 去除/etc/ssh/sshd_config的空格和注释,并打印行数。其中,-v表示反向输出;-E表示使用扩展正则表达式;-n表示输出行数。而'^#|^$'则表示,以"#"开头的注释和空行。|表示“或”的意思。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)