grep命令详解

文本搜索工具,根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行。

命令格式:grep  [options]  pattern  filename。grep适合单纯的查找或匹配文本。grep是区分大小写的。

匹配参数[options]:

  • -i     不区分大小写,忽略字符大小写
  • -v    后面接啥排除啥,取反,显示不被pattern匹配到的行
  • -n    显示匹配结果的行号
  • -c    统计匹配结果的行数
  • -o    仅显示匹配到的字符串,不把整行显示出来
  • -e    实现多个选项的匹配,逻辑or关系
  • -q    静默模式,不输出任何信息。与"echo $"合用,查看是否匹配到,0表示匹配到,1表示没有匹配到
  • -Ax:显示匹配结果所在行以及该行之后的指定行数,x是行数,A:after。
  • -Bx:显示匹配结果所在行以及该行之前的指定行数,x是行数,B:before。
  • -Cx:显示匹配结果所在行以及该行之前和该行之后的指定行数,x是行数,C:context
  • --color             显示颜色
  • -E 使用ERE,相当于egrep
[root@localhost ~]# grep "root" /etc/passwd      # 找到root所在的所有行并显示
[root@localhost ~]# grep -v "root" /etc/passwd # 找到除root外的所有行并显示
[root@localhost ~]# grep -n "root" /etc/passwd # 显示行号
[root@localhost ~]# grep -c "root" /etc/passwd # 显示匹配结果的行数
[root@localhost ~]# grep -A2 "root" /etc/passwd # 匹配含有root的行,以及该行的后两行
[root@localhost ~]# grep -e "root" -e "myuser" /etc/passwd

sed命令详解

sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed 和grep不一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才是非0。

实现数据的替换,删除,增加,选取等(以行为单位进行处理)

1.打印显示文本内容

[root@localhost ~]# sed -n '3p' test.sh        # 打印文件的第3行。
[root@localhost ~]# sed -n '$p' test.sh # 打印文件的最后一行
[root@localhost ~]# sed -n '3,6p' test.sh # 打印文件的第3行到第6行。
[root@localhost ~]# sed -n '3,$p' test.sh # 打印文件的第3行到最后一行的内容。
[root@localhost ~]# sed -n '3~2p' test.sh # 从第3行开始,每隔两行打印一行,波浪号后面的2表示步长。 [root@localhost ~]# sed -n '/love/p' test.sh # 逐行读取文件,打印匹配love的行
[root@localhost ~]# sed -n '/love/,3p' test.sh # 逐行读取文件,打印从匹配love的行到第3行的内容,也打印后面所有匹配love 的行。
[root@localhost ~]# sed -n '/love/,$p' test.sh # 逐行读取文件,打印从匹配too的行到最后一行的内容。
[root@localhost ~]# sed -n '/love/,+1p' test.sh #打印匹配too的行及其向后一行,如果有多行匹配too,则匹配的每一行都会向后多打印一行
[root@localhost ~]# sed -n '/love/,/you/p' 1.txt #打印从匹配内容love到匹配内容you的行
[root@localhost ~]# sed -n '3,/love/p' test.sh # 打印第三行到匹配love的行 # 打印test.sh文件最后一行的行号(即文件有多少行,和wc -l 功能类似)
[root@localhost ~]# sed -n "$=" test.sh
# 打印匹配error的行的行号
[root@localhost ~]# sed -n '/error/=' test.sh
# 打印匹配error的行的行号和内容(可用于查看日志中有error的行及其内容)
[root@localhost ~]# sed -n '/error/{=;p}' test.sh

2.增加文件内容,向文件中添加或插入行

# 在第三行后面添加python,3表示行号
[root@localhost ~]# sed '3apython' test.sh
# 在第三行之前插入python,3表示行号
[root@localhost ~]# sed '3ipython' test.sh # 在最后一行之后添加python
[root@localhost ~]# sed '$apython' test.sh
# 在最后一行之前插入python
[root@localhost ~]# sed '$ipython' test.sh # 在包含123的行后面添加python,如果文件中有多行包括123,则每一行后面都会添加
[root@localhost ~]# sed '/123/apython' test.sh
# 在包含123的行之前插入python,如果文件中有多行包含123,则每一行之前都会插入
[root@localhost ~]# sed '/123/ipython' test.sh

3.删除文件中指定的行

[root@localhost ~]# sed '3d' 1.txt       # 删除第三行
[root@localhost ~]# sed '$d' 1.txt # 删除最后一行
[root@localhost ~]# sed '1~2d' 1.txt # 从第一行开始删除,每隔2行就删掉一行,即删除奇数行
[root@localhost ~]# sed '1,3d' 1.txt # 删除1~3行
[root@localhost ~]# sed '1,3!d' 1.txt # 删除1~3之外的所有行 [root@localhost ~]# sed '/123/d' 1.txt # 删除匹配123的行
[root@localhost ~]# sed '/123/,$d' 1.txt # 删除从匹配123的行到最后一行
[root@localhost ~]# sed '/123/,+1d' 1.txt # 删除匹配123的行及其后面一行
[root@localhost ~]# sed '/^$/d' 1.txt # 删除空行
[root@localhost ~]# sed '/123\|abc/!d' 1.txt # 删除不匹配123或abc的行,/123\|abc/ 表示匹配123或abc ,!表示取反

4.更改文件中指定的行

[root@localhost ~]# sed '1chello' test.sh         # 将文件的第一行替换为hello
[root@localhost ~]# sed '$chello' test.sh # 将文件的最后一行替换为hello
[root@localhost ~]# sed '/123/chello' test.sh # 将包含123的行替换为hello

https://www.runoob.com/linux/linux-comm-sed.html,https://www.cnblogs.com/ftl1012/p/9250438.html,https://blog.csdn.net/wdz306ling/article/details/80087889,https://www.jianshu.com/p/d9f40945242b,https://blog.csdn.net/a13822665196/article/details/102171573

awk命令详解

Shell—三剑客(grep、sed、awk)的更多相关文章

  1. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  2. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  3. Shell学习:grep, sed, awk命令的练习题

    http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html 文件:datafileSteve Blenheim:238-923-736 ...

  4. Linux三剑客grep、awk和sed

    grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...

  5. Linux三剑客grep、awk、sed

    何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...

  6. 5_find grep sed awk 详解

    find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子( ...

  7. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  8. [svc]linux正则实战(grep/sed/awk)

    企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...

  9. linux 三剑客命令(grep,sed ,awk)

    grep 命令 :强大的文本’搜索’工具    1.grep   -n   'word'  file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号.     2 ...

  10. Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc

    Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...

随机推荐

  1. 并发编程~~~多线程~~~计算密集型 / IO密集型的效率, 多线程实现socket通信

    一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: ...

  2. 6. java 方法

    一.方法定义格式 修饰符 返回值类型 方法名称(参数类型 参数名称, ...){ 方法体; return 返回值; } 1. 修饰符:现阶段固定写法,public static 2. 参数如果有多个, ...

  3. 四、读取一系列dcm图片,然后重新写入

    一.程序功能 读取一系列的CT dcm图片,然后重新写入到一个文件夹 二.代码 #pragma warning(disable:4996) #include "itkGDCMImageIO. ...

  4. 7.SourceTree 的使用

    SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mn版本控制系统工具.支持创建.克隆.提交.push.pull 和合并等操作. 下载路 ...

  5. ZEN、ELECTRA、ALBERT

    一.ZEN 目前,大多数中文预训练模型基本上沿用了英文模型的做法,聚焦于小颗粒度文本单元(字)的输入.然而,与英文相比,中文没有空格等明确的词语边界.这个特点使得很多文本表达中存在的交叉歧义也被带入了 ...

  6. Codeforces Round #594 (Div. 1) A. Ivan the Fool and the Probability Theory 动态规划

    A. Ivan the Fool and the Probability Theory Recently Ivan the Fool decided to become smarter and stu ...

  7. ROS Tricks

    Gazebo 第一次进入 Gazebo 会卡在开始界面,此时是在加载模型文件,为保证模型顺利加载,可以提前将模型文件下载并放在本地路径 ~/.gazebo/models 下,模型文件下载地址: htt ...

  8. Spring中注解方式实现IOC和AOP

    1.IOC注解 1.1 IOC和DI的注解  IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Service:用 ...

  9. 扎心一问!你凭什么成为top1%的Java工程师?

    目录 1.解决生产环境里的突发故障 2.对棘手的线上性能问题进行优化 3.锻造区别于普通码农的核心竞争力 4.打磨架构设计能力 5.你凭什么成为 top1%?   你工作几年了? 是否天天CRUD到吐 ...

  10. IT兄弟连 Java语法教程 数组 多维数组 二维数组的初始化

    二维数组的初始化与一位数组初始化类似,同样可以使用静态初始化或动态初始化. 1)静态初始化 静态初始化的格式如下: 数组名字 = new 数组元素的类型[][]{new 数组元素的类型[]{元素1,元 ...