grep

用于文本搜索,能接受文件或者stdin作为输入,能输出各种格式

grep match_pattern filename

搜索文件中出现match_pattern的行,match_pattern是一个通配符表达式

grep word filename --color=auto

--color,可以在输出中标记匹配到的单词

使用正则表达式

grep -E "[a-z]+"

egrep "[a-z]+"

使用-E允许隔热片使用扩展正则表达式,或者默认允许使用正则表达式的egrep

echo this is a line. | grep -o -E "[a-z]+\."

输出:line.

-o只输出匹配到的文本

grep -v match_pattern file

输出除匹配的行外的所有行

grep -c "text" file

输出匹配文本的行数(注意不是次数)

echo -e "1 2 3 4\nhello\n5 6" | egrep -o "[0-9]" | wc -l

输出匹配的次数

-o:只输出匹配的文本

wc -l:统计输出文本的行数,这里也就是匹配到的次数了

grep -n match_pattern file

输出匹配文本所在的行号和匹配到的行,如果是多个文件则会包括文件名称

echo gnu is not unix | grep -b -o "not"

输出:7:not

-b: 输出匹配字符或者字节的偏移

grep -l match_patten sample1.txt sample2.txt

输出包含match_pattern文本的文件名称

grep -L match_patten sample1.txt sample2.txt

输出不包含match_pattern文本的文件名称

递归搜索文件

grep "text" . -R -n

从当前目录开始递归搜索包含text文本的文件,输出文件名称:行号:匹配的行

忽略样式中的大小写

grep -i pattern file

对pattern不区分大小写进行匹配

匹配多个样式

grep -e pattern1 -e pattern2 filename

匹配多个pattern

grep -F pattern_file filename

使用pattern_file中多个模式进行匹配

在搜索目录的时候包括或者排除文件

grep pattern . -r --include *.{c,cpp}

在当前目录下递归搜索的.c和.cpp文件中pattern,some{stirng1,string2}会扩展为somestring1,somestring2

grep pattern . -r --exclude "README"

在当前目录下递归搜索pattern,除了README文件

使用--exclude-dir排除目录

从文件中读取需要排除的文件名称列表: --exclude-from filename

以0值字节作为分隔符输出

grep pattern file* -lZ | xargs -0 rm

搜索所有file开头的文件名称,并输出文件名,以0值字节作为分隔符,xargs使用0值字节作为分割将输入分割为多个参数传递给rm

静默模式

grep -q pattern filename

不会产生输出,如果搜索到grep返回0,没有搜索到则返回非0,通过判断$?

可以用判断文件是否存在指定模式的文本

打印出文本匹配之前或者匹配之后的行

seq 10 | grep 5 -A 3

输出:

5

6

7

8

-A 3:打印出搜索到文本之后的三行,第一行输出搜索到的行

seq 10 | grep 8 -B 3

输出:

5

6

7

8

-B 3:打印出搜索到文本之前的三行,第四行输出搜索到的行

seq 10 | grep 5 -C 2

输出:

3

4

5

6

7

-C 2:打印出搜索到文本之前的两行,中间行输出匹配到的文本所在的行

echo -e "a\nb\nc\na\nb\nc" | grep a -A 1

输出:

a

b

a

b

当有多个匹配的时候,使用"--"作为分割输出

cat

输出文件内容

cat << delimiter
>first line
>second line
>delimiter

输出:

first line
second line

delimiter: 可以为任意合法字符,用来表示开始和结束,一般用EOF(注意这里的EOF和c里面的EOF不一样,这里仅仅是一个字符串表示,c里面表示一个宏,-1,当读到文件末尾的时候返回'EOF')

最后一个delimiter前后不能有任何其他字符

cat << delimiter > file
>first line
>second line
>delimiter

从标准输入读取输出到文件中

cat <<- delimiter
>for (i=1; i< 4; i++)
>{
> print i;
>}
>delimiter

输出:

for (i=1; i< 4; i++)
{
print i;
}

<<- : 不会保留输入前面的tab会被删除, "<<"会原样输出

linux 命令 — grep的更多相关文章

  1. linux 命令grep

    linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...

  2. 【linux】linux命令grep + awk 详解

    linux命令grep  +  awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...

  3. Linux 命令 - grep: 正则搜索文本

    grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...

  4. Linux 命令——grep | 正则表达式

    感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line ...

  5. 菜鸟学Linux命令:grep配合ls等使用

    linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...

  6. Linux命令-grep

    grep命令用于对文本进行搜索,格式为“grep [选项] [文件]” 搜索某个关键词:"grep 关键词 文本文件" 参数说明 -b 将可执行文件当做文本文件来搜索 -c 仅显示 ...

  7. (转)Linux命令grep

    场景:grep命令在文件搜索中经常会使用到,所以熟练掌握该命令对于日常日志搜索相当有必要! Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.g ...

  8. [ Linux 命令 ] grep

    一.grep是什么? Linux grep命令是用于查找文件里符合条件行的shell命令. 二.为什么要使用grep? 在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行 ...

  9. 日志快速筛选 之 linux命令grep|uniq|wc|awk

    以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...

  10. linux命令-grep+正则表达式用法

    目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:egrep 'root' passwd 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的 ...

随机推荐

  1. nginx高级用法汇总

    1,nginx限制IP访问,允许IP访问 1.1 模块:nginx_http_access_module 注意:检测顺序是按配置顺序进行的,匹配首条规则将会被使用,所以要注意在配置文件配置的顺序. a ...

  2. python jieba库

    https://www.cnblogs.com/snailclimb/p/9086433.html https://blog.csdn.net/codejas/article/details/8035 ...

  3. 整理CSS中display flex(布局利器)

    关于display:flex布局,有人了解颇深,我也是看着别人的东西学习的. display:flex的布局是什么.基本概念之类的我根本就不了解,只会用.每次看到概念之类的东西,我都是扫一眼就过去. ...

  4. Django积木块七——视频

    视频 # 在网上搜索video.js然后下载相关的js和css文件,看文档正确使用视频模块,添加视频外链 <div style="width: 1200px;height: 675px ...

  5. java holdsLock()方法检测一个线程是否拥有锁

    http://blog.csdn.net/w410589502/article/details/54949506 java.lang.Thread中有一个方法叫holdsLock(),它返回true如 ...

  6. JavaScript基础学习笔记整理

    1.关于JS: (1)脚本语言——不需要编译的语言(常见有cmd,t-sql)----解释性语言; (2)动态类型的语言——1.代码只有执行到那个位置才知道那个变量中存储的是什么 2.对象中没有某个属 ...

  7. Linux更新源汇总-18.9.7更新

    企业站 阿里云:https://opsx.alibaba.com/mirror 网易:http://mirrors.163.com/ 教育站 北京理工大学:http://mirror.bit.edu. ...

  8. openGL-计算机图形大作业中出现的几个错误及解决

    错误一 错误现象:按动相应按键i和o无法在x轴和y轴移动camera,但按相应按键p可以在z轴移动camera. 错误原因:为了移动camera,设置了三个全局变量x.y.z,用于gluLookAt( ...

  9. Linux 常用分区方式

    1 分两个区 主目录:/ 交换分区:swap 2 常用分区方式,以使用100G空间安装linux为例 引导分区: 挂载点/boot,分区格式ext4,500M以内即可 交换分区: 无挂载点,分区格式选 ...

  10. 1-C++的并发世界

    1.1 何谓并发 并发的两种方式 多核机器上的真正并行 单核机器的任务切换 并发的两种途径 多进程并发 1.1 多进程并发需要通过操作系统进行进程间通信 多线程并发 2.1 多线程并发需要共享内存 1 ...