grep 文本筛选:匹配、反选与退出状态验证

grep 文本筛选:匹配、反选与退出状态验证

1. 用途介绍

grep 在文本文件或标准输入中筛选匹配行;-v 反选,输出不匹配的行。常用于日志排查、配置检查和脚本条件判断,不是网络服务。

2. 准备运行环境

Linux 终端及 grep,普通账号即可。只需对输入文件有读取权限,不需要 root 或联网。命令区分大小写,应输入 grep 而非 Grep。

3. 相关知识与注意点

• 默认模式是正则表达式;按字面字符串搜索使用 -F。

• -v 是对整行匹配结果反选,不是删除行内某个单词。

• -i 忽略大小写,-n 显示行号;空行也可能被 -v 保留。

• 模式用单引号保护,避免 Shell 展开。以减号开头的模式使用 -e 指定。

• grep 默认只输出结果,不修改原文件。

4. 实验步骤

使用固定输入,避免依赖服务器真实日志:

bash 复制代码
printf 'INFO ready\nERROR timeout\nDEBUG trace\n' | grep 'ERROR'
printf 'INFO ready\nERROR timeout\nDEBUG trace\n' | grep -v 'ERROR'
printf 'INFO ready\nERROR timeout\nDEBUG trace\n' | grep -n 'ERROR'
printf 'a.b\naxb\n' | grep -F 'a.b'

预期分别输出 ERROR timeout;反选输出 INFO ready 和 DEBUG trace;行号结果为 2:ERROR timeout;字面搜索只匹配 a.b。

5. 验证命令

bash 复制代码
printf 'hello\n' | grep 'hello'
printf '%s\n' "$?"
printf 'hello\n' | grep 'absent'
printf '%s\n' "$?"

预期退出状态分别为 0 和 1。通常 0 表示有匹配、1 表示无匹配、2 表示错误,不能把无匹配误报为执行故障。退出状态需紧接命令读取。

检查 grep -v 是否包含空行:

bash 复制代码
printf 'INFO\n\nERROR\n' | grep -v 'ERROR' | cat -n

预期保留 INFO 和空行。要同时排除空行可用 grep -v -e 'ERROR' -e '^$'。以上是确定输入的预期结果,不是本机实测报告。

相关推荐
就像楞次定律1 小时前
【Linux 学习记之一】日常生产力工具与终端流的高效闭环实践(1)
linux
奔跑的架构师1 小时前
[A-51]ARMv9/v8-SCMI系统架构
linux·arm开发·架构·系统架构·arm
小超人诞生日记1 小时前
Linux 进程优先级
linux·运维·服务器
weixin_460443561 小时前
Java+Linux私有化训考平台:服务、数据库与终端部署结构解析
java·linux·数据库·私有化部署·企业培训考试系统·企业考试系统
en.en..3 小时前
MRS/MSR 指令操作 xPSR 寄存器
linux·运维·服务器
Brilliantwxx3 小时前
【Linux】 自主shell编写巩固复习篇
linux·运维·服务器·开发语言
鱼很腾apoc3 小时前
【MySQL】第3期 索引、事务与视图系统详解
linux·mysql·事务·索引·dml·视图·macc
anew___3 小时前
《从零手写操作系统 (49):虚拟内存进阶——Demand Paging、Swap与缺页异常处理》
linux·服务器·php
迷途之人不知返4 小时前
【基础IO】-4-再谈重定向
linux