跳转至
本文阅读量

grep 命令用法

概述

示例数据

Hello, grep

this is demo paragraph-1
this is demo paragraph-1
this is demo paragraph-1
this is demo paragraph-1
this is demo paragraph-1

that is another section-2

that is another section-6

footer-1

footer-2

常见场景

如何进行反向匹配

使用 -v 选项进行反向匹配,即去掉匹配中的内容,保留剩下部分

-v 取自于 reverse 单词

grep -v demo | grep -v 

如何去掉多个不想要的匹配记录

使用 -v 加 管道|,即通过多次匹配来去掉不想要的内容

grep -v demo | grep -v footer

如何匹配去掉空行

grep -v "^\s*$"

如何同时匹配多个表达式(或的关系)

可以使用多个 -e 指定匹配到任意一个表达式即可

grep -e demo -e section

如何打印出匹配前后的一些指定内容

有时候我们不仅关注匹配到的内容,还想知道匹配到的地方前后都发生了什么,即想知道匹配发生上下文,该如何来做呢?

可以通过打印匹配行前后指定行来实现

打印出 foo 前 30 行,后 20 行数据, -A: --after, -B: --before

grep foo -A 20 -B 30

如何打印一行中的指定个数的字符

有时候一行内容特别多,尤其是 web 压缩后,可能所有文件都是一行,这是仅需要打印出目标字串前后的固定个数的字符即可

grep -r -E -o ".{0,10}wantedText.{0,10}" *
  • -o: 仅打印匹配到字串部分

参考 https://unix.stackexchange.com/questions/163726/limit-grep-context-to-n-characters-on-line ⧉