首页 > 系统相关 >linux 中sed命令输出匹配字符的下一行或者若干行

linux 中sed命令输出匹配字符的下一行或者若干行

时间:2023-09-25 22:57:18浏览次数:39  
标签:字符 test2 keyword pc1 sed base linux txt root

 

001、grep实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt          ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# grep "keyword" -A 2 a.txt    ##  输出匹配字符后面的两行
keyword
3
4
--
keyword
6
7

 

002、sed实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt       ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# sed -n '/keyword/,+2p' a.txt     ## 输出匹配字符后面的两行
keyword
3
4
keyword
6
7

 

003、awk实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt       ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8                                 ## 输出匹配字符及其后的两行
(base) [root@pc1 test2]# awk '{if($0 ~ /keyword/) {idx = "yes"; tmp=NR}; if(NR <= tmp + 2 && idx == "yes") {print $0}}' a.txt
keyword
3
4
keyword
6
7

 

004、不包括匹配的关键字,grep + sed实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt          ## 测试文本
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# grep "keyword" -A 2 a.txt | grep -v "keyword"   ## 输出关键字后两行,不包括关键字
3
4
--
6
7

 

005、不包括匹配的关键字,sed实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt       ## 测试文本
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# sed -n '/keyword/,+2{/keyword/b;p}' a.txt   ## 输出匹配字符后边的两行
3
4
6
7

 

006、不包括关键字,awk实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt     ## 测试文本
1
2
keyword
3
4
5
keyword
6
7
8                                      ## awk实现
(base) [root@pc1 test2]# awk '{if($0 ~ /keyword/) {idx = "yes"; tmp = NR + 2; next}; if(NR <= tmp) {print $0}}' a.txt
3
4
6
7

 。

 

标签:字符,test2,keyword,pc1,sed,base,linux,txt,root
From: https://www.cnblogs.com/liujiaxin2018/p/17729065.html

相关文章

  • Linux-----进程、线程、协程的生命周期、调度器slab
    Linux进程、线程、协程的区别进程进程是操作系统中的一个独立执行单元。每个进程都有自己的独立内存空间,包括代码段、数据段、堆栈等。进程之间通常需要通过进程间通信(IPC)来交换数据和信息。进程启动和销毁开销较大,因为需要分配和释放独立的内存空间。进程之间隔离度高,一个......
  • linux 文件权限
    1.查看文件权限2.rwx的意义3.改变文件属性与权限3.1rwx与4213.2改变文件权限:chmod3.3改变文件所属组群:chgrp3.4改变文件所有者:chownLinux下一切皆文件,Linux中所有内容都是以文件的形式保存和管理的,因此了解文件系统是学习Linux十分重要的一步。而Linux是一个多用户操作......
  • linux的认知与基本命令
    一.linux的了解1.什么是Linux?      a,Linux是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它......
  • Linux-----任务调度层次
    在Linux操作系统中,任务调度涉及多个层次和组件,这些层次和组件共同协作以实现任务的分配和执行。以下是Linux中的任务调度层次:硬件调度最底层的调度发生在处理器硬件层面。硬件调度器(通常由CPU或CPU内核管理)负责在不同任务之间切换,并根据硬件特性执行任务。这包括处理硬件中断、......
  • Linux---内核初始化
    内核初始化引导加载程序(BootLoader)计算机首先加载引导(GRUB)。引导加载程序的任务是从存储介质(硬盘、光盘等)加载操作系统内核到内存中,并跳转到内核的启动位置。设置堆栈和切换到保护模式内核初始开始时,计算机可能仍让处于实模式。内核会设置堆栈,切换到保护模式或长模式......
  • 数字字符串格式化,位数不足前面补0
    我是这样写的:BigDecimalb1=newBigDecimal("0.01");BigDecimalresult=b1.multiply(newBigDecimal("1000")).setScale(0,RoundingMode.DOWN);System.out.println(StringUtils.leftPad(result.toPlainString(),6,"0"));//一共有6位,不足6位,就在前面补......
  • Linux shell script if condition control flow methods All In One
    LinuxshellscriptifconditioncontrolflowmethodsAllInOneif...then...fi/if...then...else..fi/if...then...elif...then...fi#!/usr/bin/envbashifbugthenecho"bug✅"elseecho"bug❌"fiifpwdthenecho"pwd......
  • Windows Server 2019 使用 WSL(Linux子系统(官方发行WSL版))
    启用适用于Linux的Windows子系统必须启用“适用于Linux的Windows子系统”可选功能并重启,然后才能在Windows上运行Linux发行版。以管理员身份打开PowerShell并运行:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux下......
  • Windows Server 2019 使用 WSL(Linux子系统(Centos非官方发行版))
    启用适用于Linux的Windows子系统必须启用“适用于Linux的Windows子系统”可选功能并重启,然后才能在Windows上运行Linux发行版。以管理员身份打开PowerShell并运行:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux下......
  • linux 查找
    一、文件查找1.按照名称精确查找(全局查找)找到所有这个文件[root@localhost/]#find/-nametnsnames.ora 按照名称精确查找(当前路径查找)​​​​​​​[root@localhost/]#find.-namei-bpm.jar2.按照名称模糊查找(全局查找&指定目录查找)[......