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 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道1 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.4 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落6 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨6 小时前
WSL2的安装与使用
linux·wsl
微小的鱼6 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng6 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮7 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky19 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默19 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu