grep简介

grep

grep(Global search a Regular Expression and Print)
是Linux系统中很常用来搜寻特定字串或样式的工具.
用来查找文字内容或是某个档案.
且通常在每个Linux发行版本都预先有安装,
就算没安装也能透过apt-getyum等等的套件管理器进行安装.
且能搭配Regexp做匹配查找或过滤.

grep跟PowerShell的Select-String功能与目的都雷同

格式

grep [option] pattern [file1 file2...]
or
stdout | grep [option] pattern

Option

  • -v 不显示匹配行资讯, 也就是反向查找
  • -i 搜寻时忽略大小写
  • -n 显示行号
  • -r 递回搜寻
  • -E 支持Regex
  • -F 不支持Regexp, 按照字面意思查找
  • -c 只显示匹配的总行数
  • -w 只显示匹配整个词的行
  • -x 只显示整行都匹配
  • -l 只显示文件名称, 不显示其内容
  • -s 不显示错误资讯
  • -q 不列印任何资讯

尝试

来简单玩一下

grep '^root' /etc/passwd /etc/shadow

https://ithelp.ithome.com.tw/upload/images/20210906/20104930wQTXSCjKEt.png

这里用的是格式1, 读取档案的方式
^root 是我们的pattern匹配样式, 这里用到Regexp, 表示该行以root开始
/etc/passwd /etc/shadow这里是两个档案
最前面是显示有匹配到的档案, grep会把匹配到的单字, 给HighLight起来.

有时候就只是想要知道执行结果的话, 能透过$?来观察.
当grep有找到匹配项目时, 结束状态会是0
没找到匹配内容时, 结束状态则是1
找不到指定文件时, 则是2

刚刚的例子, 改造一下

grep '^root' /etc/passwd /etc/shadow; echo $?

https://ithelp.ithome.com.tw/upload/images/20210907/20104930bj8SYIBpA9.png
利用echo做打印, 能看到输出为0, 因为有找到匹配内容

grep '^ithome' /etc/passwd /etc/shadow; echo $?

https://ithelp.ithome.com.tw/upload/images/20210907/20104930hRpXfZjbf8.png
能看到输出为1, 因为找不到匹配内容

grep '^ithome' /etc/passwddddddd; echo $?

https://ithelp.ithome.com.tw/upload/images/20210907/20104930qjTWmQVTbN.png
能看到输出为2, 因为找不到档案

----参考来源
鸟哥Linux私房菜 $?


<<:  D7- 用 Swift 和公开资讯,打造投资理财的 Apps { 台股申购分析资料来源 }

>>:  花时间在一件很难的事情上,感受从不会到会的愉悦

Day 5 (CSS)

1.好用icons font Awesome 4.7(後面版本要钱) https://fontawe...

Day18 - 铁人付外挂前置作业(三)- 建立资料夹结构

使用 Valet 或是其他本机环境软件把 WordPress 安装好之後,切换到网站根目录,可以看到...

IIFEs 立即函式:不需呼叫即可执行

在连假期间持续发文真是一大毅力的展现,中秋快乐 ▼ω▼ 立即函式 还记得刚学 JS 的时候没用过,看...

【D21】修改食谱#2:根据市价,模拟小台改价

前言 昨天已经模拟出改价了,现在更进阶,使用小台的现价来改价。 参考网站:Futures 本日程序码...

Day 4— 自动化回信机(1) 前置作业

今天开始就要来利用专题了解 GAS 的各项功能罗~ 说到要能优雅、或是狼狈的…总之要能够享受下午茶,...