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.htmlhttps://www.cnblogs.com/ftl1012/p/9250438.htmlhttps://blog.csdn.net/wdz306ling/article/details/80087889https://www.jianshu.com/p/d9f40945242bhttps://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. 【React Native】react-native之集成支付宝支付、微信支付

    一.在使用支付宝支付.微信支付之前导入桥接好的头文件 github地址:https://github.com/xujianfu/react-native-pay 二.集成支付宝支付流程 RN支付宝需要 ...

  2. react-native 键盘遮挡输入框

    Android上已经自动对键盘遮挡输入框做了处理,所以我们只需要关注ios. 1.首先引入 KeyboardAvoidingView import { KeyboardAvoidingView } f ...

  3. RDIFramework.NET敏捷开发框架WinForm新增文件中心-实现附件集中管理

    1.引言 文件中心类似附件管理是一个非常实用功能,可以归档自己平时所需要的文件,也可以把文件分享给别人,更像一个知识中心.文件中心主界面如下图所示,左侧"附件分类"展示了用户对文件 ...

  4. Data Management Technology(4) -- 关系数据库理论

    规范化问题的提出 在规范化理论出现以前,层次和网状数据库的设计只是遵循其模型本身固有的原则,而无具体的理论依据可言,因而带有盲目性,可能在以后的运行和使用中发生许多预想不到的问题. 在关系数据库系统中 ...

  5. Horovod 分布式深度学习框架相关

    最近需要 Horovod 相关的知识,在这里记录一下,进行备忘: 分布式训练,分为数据并行和模型并行两种: 模型并行:分布式系统中的不同GPU负责网络模型的不同部分.神经网络模型的不同网络层被分配到不 ...

  6. docker 限制容器能够使用的资源

    docker 限制容器能够使用的内存,CPU,I/O 资源概述,内存是非可压缩资源,cpu是可压缩资源. 内存用超了,就发送Out Of Memory Exception,容器会被kill掉.所以内存 ...

  7. 《目标:OKR与KPI漫谈》

    一.为什么要写这个 写这个题目其实是很偶然的,因为到年中了,公司的同事和领导都要看一下上半年的OKR的完成情况,同时也要制定下下半年的OKR,突然想到了之前在天津的公司时,大家说的是KPI,现在说的是 ...

  8. centos7上搭建开源系统jforum

    centos7上搭建好tomcat,mysql; 将 jforum-2.6.2.war放到tomcat目录的webapps下: 启动tomcat,./startup.sh ,查看webapp下jfor ...

  9. 机器学习--用PCA算法实现三维样本降到二维

    对于维数比较多的数据,首先需要做的事就是在尽量保证数据本质的前提下将数据中的维数降低.降维是一种数据集预处理技术,往往在数据应用在其他算法之前使用,它可以去除掉数据的一些冗余信息和噪声,使数据变得更加 ...

  10. Linux下安装redis报错信息

    redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报  分类: Linux安装工具(2)  版权声明:本文为 ...