三剑客gerp总结

grep
文本搜索工具,可以使用正则表达式 搜索文本同时将 匹配到的内容进行输出.
参数
-E gerp的扩展(升级版本)等同于egerp
-v 显示不包含匹配文本的所有行
-o 显示过程
-i 查询信息时不区分大小写
-n 显示匹配行即行号
-r 递归查找信息
正则表达式主要参数
\
1.将有特殊意义符号,转义成普通信息进行识别
2.将没有意义的信息转义为有特殊意义的信息
(\n 换行符号)
(\t 制表符号)
[ ] 单个字符,如[AO]即AO符合要求 。
[ - ] 范围,如[A-Z],即A、B、C一直到Z都符合要求
(-) 匹配前一个字符连续出现了1次或者多次
{} 可以指定字符连续匹配的次数
1.x{n,m} 表示前一个字符至少连续出现n次,最多出现m次
2.x{n} 表示前一个字符正好连续出现了n次
3. x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限
4. x{,m} 表示前一个字符至少连续出现0次,最多出现m次

gerp -v "^$" /ppd/ppd.txt

排除空行显示

gerp "." /ppd/ppd.txt

搜索ppd.txt文件中.的信息

gerp "0*" /ppd/ppd.txt

匹配前一个字符连续出现0次或者多次.

gerp "^m.*m$" /ppd/ppd.txt

查询ppd.txt文件中以m开头m结尾的内容

gerp "^m.*o" /ppd/ppd.txt

查询ppd.txt文件中以m开头,其中包含o的内容

gerp "^m.*ot" /ppd/ppd.txt

查询ppd.txt文件中以m开头,其中包含ot的内容

(ps:.*==*)
grep "\.$" /ppd/ppd.txt 

显示以.结尾的内容(注意正则符号\的使用)

grep "p[oe]y" /ppd/ppd.txt

匹配poy和pey的内容

grep "^[Im]" /ppd/ppd.txt 

匹配I和m开头的内容

grep "^[a-Z]" /etc/selinux/config 

匹配a-Z开头的内容

egrep "0+" /ppd/ppd.txt 

匹配0出现一次或者多次的内容(注意+号要用高级版本egrep)

 echo 123456|sed -r 's#([1-6]+)#<\1>#g'
 echo 123456|sed -r 's#(.*)#<\1>#g'

echo 123456 ==> 转换为 <123456>进行显示

grep -E "0{2,3}" /ppd/ppd.txt 

显示0至少出现2次最多出现3次的内容

grep -E "0{2}" /ppd/ppd.txt 

显示0正好出现2次的内容

grep -E "0{2,}" /ppd/ppd.txt 

显示0最少出现2次最多不限次数的内容

grep -E "0{,2}" /ppd/ppd.txt 

显示0最少出现0次最多不限次数的内容

<think> 我们正在讨论的是`grep`命令,而不是`gerp`。用户可能输入有误,但根据上下文,我们可以推断用户指的是`grep`命令。 用户的问题是:grep命令中`-wn`参数的作用及使用方法。 首先,我们需要明确`grep`命令的`-w`和`-n`选项。因为`-wn`实际上是两个选项的组合:`-w`(单词匹配)和`-n`(显示行号)。 根据grep的man手册: - `-w, --word-regexp`:只选择那些包含整个单词的匹配行。匹配的字符串必须是一个单词,即它必须被非单词组成成分(如空格、标点符号、行首/行尾)所包围。 - `-n, --line-number`:在输出的每一行前面加上它在文件中的行号(基于1)。 因此,`-wn`的作用是:在文件中查找包含整个单词(而不是部分匹配)的模式,并且输出时显示匹配行的行号。 使用方法: 基本语法:grep -wn [要查找的单词] [文件名] 示例: 假设有一个文件`example.txt`,内容如下: This is a sample file. There is an apple on the table. I like apples. 我们想要查找整个单词“apple”(即不匹配“apples”),并显示行号: grep -wn "apple" example.txt 输出: 2:There is an apple on the table. 注意:第3行的“apples”不会被匹配,因为`-w`要求整个单词匹配。 另外,也可以同时搜索多个文件,例如: grep -wn "apple" file1.txt file2.txt 输出中会显示文件名和行号,如: file1.txt:2:There is an apple on the table. 如果在一个目录中递归搜索,可以结合`-r`选项: grep -wnr "apple" /path/to/dir 注意:在有些系统中,`-w`选项使用单词边界(\b)来确保匹配的是整个单词。 引用说明: 根据用户提供的引用[1]是关于信号处理的,与grep命令无关,因此这里不适用。我们根据grep的标准文档进行解释。 因此,我们回答用户的问题,并生成相关问题。 </think> ### grep命令的`-wn`参数详解 `grep -wn` 是`-w`和`-n`两个参数的组合作用: 1. **`-w`(全词匹配)** 只匹配整词而非部分字符。例如搜索`apple`时,不会匹配到`pineapple`或`apples`,确保单词边界匹配。 2. **`-n`(显示行号)** 在输出结果中显示匹配行在文件中的行号。 #### 使用方法 ```bash grep -wn "搜索词" 文件名 ``` #### 示例 假设文件`demo.txt`内容: ``` 1: This is a test line 2: grep is a powerful tool 3: This line contains keyword grep 4: grep-w test (带连字符) ``` 执行命令: ```bash grep -wn "grep" demo.txt ``` 输出结果: ``` 2:grep is a powerful tool 3:This line contains keyword grep ``` **说明**: - 第4行未显示:因`grep-w`被`-w`视为独立词(连字符属于单词边界) - 行首数字`2:`和`3:`是`-n`添加的行号 #### 常见组合场景 1. 递归搜索目录并显示行号: ```bash grep -wnr "error" /var/log/ ``` 2. 匹配特定单词(忽略子串): ```bash grep -wn "code" *.py # 匹配整词"code" ``` 3. 结合正则表达式: ```bash grep -wn "\<run\>" script.sh # 使用单词边界锚点 ``` > ⚠️ 注意:`-w`的单词边界判定基于标点/空格/行首尾等非字母数字字符。连字符(`-`)在单词内部时(如`grep-w`)会被视为独立单词的分隔符[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值