Unix grep 用法

如果您要在几个文本文件中查找一字符串,可以使用'grep’命令。‘grep’在文本中搜索指定的字符串。
假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
 

其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
当然,如果预料到有许多输出,您可以通过 管道 将其转到‘ less’上阅读
$ grep magic /usr/src/linux/Documentation/* | less

这样,您就可以更方便地阅读。


下面是一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
这里还有些用于搜索的特殊符号:
< 和 > 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,
grep \'<man\' * 匹配‘manic’和‘man’,但不是‘Batman’,
grep \'<man>\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
\'^M\':指匹配的字符串在行首,
\'N$\':指匹配的字符串在行尾,
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
grep 是一个在 Linux 和类 Unix 操作系统中非常常用的命令行工具,它可以帮助我们在文件中搜索指定的字符串模式,并输出匹配到的行。以下是一些常用的 grep 用法示例: 1. 在一个文件中搜索一个字符串: ``` grep "string" filename ``` 示例: ``` grep "hello" file.txt ``` 2. 在多个文件中搜索一个字符串: ``` grep "string" file1.txt file2.txt file3.txt ``` 示例: ``` grep "hello" file1.txt file2.txt file3.txt ``` 3. 搜索一个目录中的所有文件: ``` grep "string" directory/* ``` 示例: ``` grep "hello" /home/user/documents/* ``` 4. 搜索一个目录及其子目录中的所有文件: ``` grep "string" -r directory/ ``` 示例: ``` grep "hello" -r /home/user/documents/ ``` 5. 搜索时忽略大小写: ``` grep -i "string" filename ``` 示例: ``` grep -i "hello" file.txt ``` 6. 显示匹配行前或后的指定行数: ``` grep -A num "string" filename # 显示匹配行后 num 行 grep -B num "string" filename # 显示匹配行前 num 行 grep -C num "string" filename # 显示匹配行前后各 num 行 ``` 示例: ``` grep -A 2 "hello" file.txt # 显示匹配行后 2 行 grep -B 1 "hello" file.txt # 显示匹配行前 1 行 grep -C 2 "hello" file.txt # 显示匹配行前后各 2 行 ``` 7. 统计匹配行数: ``` grep -c "string" filename ``` 示例: ``` grep -c "hello" file.txt ``` 以上是 grep 的一些常用用法,更多详细信息可以使用 `man grep` 命令查看帮助文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值