linux 命令 — grep
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的更多相关文章
- linux 命令grep
linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...
- 【linux】linux命令grep + awk 详解
linux命令grep + awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...
- Linux 命令 - grep: 正则搜索文本
grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...
- Linux 命令——grep | 正则表达式
感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line ...
- 菜鸟学Linux命令:grep配合ls等使用
linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...
- Linux命令-grep
grep命令用于对文本进行搜索,格式为“grep [选项] [文件]” 搜索某个关键词:"grep 关键词 文本文件" 参数说明 -b 将可执行文件当做文本文件来搜索 -c 仅显示 ...
- (转)Linux命令grep
场景:grep命令在文件搜索中经常会使用到,所以熟练掌握该命令对于日常日志搜索相当有必要! Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.g ...
- [ Linux 命令 ] grep
一.grep是什么? Linux grep命令是用于查找文件里符合条件行的shell命令. 二.为什么要使用grep? 在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行 ...
- 日志快速筛选 之 linux命令grep|uniq|wc|awk
以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...
- linux命令-grep+正则表达式用法
目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:egrep 'root' passwd 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的 ...
随机推荐
- 语音端点检测(Voice Activity Detection,VAD)
本文内容均翻译自这篇博文:(该博主的相关文章都比较好,感兴趣的可以自行学习) Voice Activity Detection(VAD) Tutorial 语音端点检测一般用于鉴别音频信号当中的语音出 ...
- python之支付
一,alipay方式 1,国内的alipay支付:我在网上找了好多的教程,大多数都是属于国内内支付的,所以在这里我就不详细介绍了, 操作:https://www.cnblogs.com/xuanan/ ...
- Unity打包提示UnityEditor.BuildPlayerWindow+BuildMethodException: Build failed with errors.错误
不要将打包的输出路径设置为Assets文件夹下面即可,MD真坑 老外给出的解释: As you have noticed after you click build settings you are ...
- PhpSpreadsheet处理表格
介绍:PhpSpreadsheet是PHPExcel的下一个版本.它打破了兼容性,大大提高了代码库质量(命名空间,PSR合规性,最新PHP语言功能的使用等).由于所有努力都转移到了PhpSpreads ...
- Docker pull下来的镜像(2)
1.通过docker pull ubuntu:12.04 命令拉取镜像,ll发现当前目录并没有什么变化. 2.切换到docker目录 [root@iZwz9fedjw2xvy6fvxfnxgZ zxy ...
- Borg, Omega, and Kubernetes读后笔记
前言 最近又读了一遍 Borg, Omega, and Kubernetes 这篇文章,觉得这个文章写得很好,让我对架构设计有了进一步的认识,所以想写一篇读后笔记. 原文地址,还有篇中文翻译的,这个中 ...
- linux使用framebuffer的代码
#include <linux/fb.h> #include <sys/mman.h> #include <sys/ioctl.h> #include <st ...
- hdu 1086 You can Solve a Geometry Problem too [线段相交]
题目:给出一些线段,判断有几个交点. 问题:如何判断两条线段是否相交? 向量叉乘(行列式计算):向量a(x1,y1),向量b(x2,y2): 首先我们要明白一个定理:向量a×向量b(×为向量叉乘),若 ...
- 管道/FIFO
管道: #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h&g ...
- 包建强的培训课程(16):Android新技术入门和提高
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...