grep 非常强大,可以在文件中搜索任意的字符串,通常的场景多是以行为单位进行检索,但若标识字符串与搜索内容不在一行怎么办? 例如下面的一个kubernetes部署文件,现在需要从该文件中取出部署名,也就是

metadata:
  name: projecta-web-ms-deployment

中的name值。

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:name: projecta-web-ms-deploymentnamespace: projecta-devlabels:app: projecta-web-ms
spec:replicas: 1selector:matchLabels:app: projecta-web-mstemplate:metadata:labels:app: projecta-web-msspec:nodeSelector:disktype: projectkdevcontainers:- name: projecta-web-msimage: 192.168.1.8/projecta.io/projecta-web:1.5.0-SNAPSHOTimagePullPolicy: Alwaysports:- containerPort: 8080volumeMounts:- name: v2mountPath: /usr/projecta/logsvolumes:- name: v2hostPath:path: /home/docker/data/tomcat/bpm/ms/logs

(1)首先取出带标识串的部分:

因为有多个name特征串,不能使用单行搜索,否则会返回多条数据。

命令: grep -Pzo "metadata:\s*\n  name:.*$" deployment.yaml

说明:-P, --perl-regexp,使用Perl正则表达式; z,处理多行; o,只输出匹配部分。因为如果进行多行匹配,就没有换行作为匹配结束边界,会返回剩下的全部文本

结果:

metadata:
  name: projecta-web-ms-deployment

(2)提取标识符所在行

命令:grep -Pzo "metadata:\s*\n  name:.*$" deployment.yaml  | grep name

结果:

name: pi6000-bpm-web-ms-deployment

(3)使用sed命令提取值

命令:grep -Pzo "metadata:\s*\n  name:.*$" deployment.yaml  | grep name | awk '{print $2}'

结果:

pi6000-bpm-web-ms-deployment

至此,就实现了我们最初的目标,提取出了跨行文本中的特征值。

(4)综合使用

若在脚本里执行,则需要将上述执行过程获得的值传到下面的脚本继续执行,这时,只需要定义一个变量保存提取值就可以了:

命令:

deploymentname=`grep -Pzo "metadata:\s*\n  name:.*$" deployment.yaml | grep name | awk '{print $2}'`

grep 跨行搜索(匹配)相关推荐

  1. linux grep跨行文本匹配,grep跨行匹配

    grep -Pazo '\supstream [\w].com[\s\S]*?}$' nginx.conf 输出结果为: upstream ww.com { server keepalive 50; ...

  2. linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法

    摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...

  3. 如何在Git历史记录中grep(搜索)已提交的代码

    我过去某个时候已经删除了文件或文件中的某些代码. 我可以在内容中(而不是在提交消息中)grep吗? 一个非常糟糕的解决方案是grep日志: git log -p | grep <pattern& ...

  4. grep 与条件_小白贴:使用 grep 命令搜索多个字符串

    grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出.文内含长段代码可复制可往左滑,希望对大家有帮助! Grep的多条件搜索模式 grep支持三 ...

  5. Linux——grep文本搜索命令

    转自:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则 ...

  6. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法

    这篇文章主要介绍了Linux中使用grep命令搜索文件名及文件内容的方法,同时文中还介绍了将匹配结果高亮显示的方法,相当实用,需要的朋友可以参考下 从文件中搜索并显示文件名 当从多个文件中搜索时,默认 ...

  7. Windows系统如何使用grep来搜索文件的字符串

    在linux系统用惯了grep来搜索日志文件的指定内容,一到windows系统下就不习惯用notepad++来搜索了. 一开始是想用grep for Windows来解决这个问题,后面发现window ...

  8. grep 正则表达式搜索

    平时使用grep搜索字符串的频率很高,但绝大时候都使用的是最简单的搜索,稍微复杂一点就要先百度.归根接地是对正则表达式的使用不够熟练. 下面总结一下平时工作中用到的正则表达式. 语法 grep [op ...

  9. laravel 分词搜索匹配度_DSSM文本匹配模型在苏宁商品语义召回上的应用

    文本匹配是自然语言处理中的一个核心问题,它不同于MT.MRC.QA 等end-to-end型任务,一般是以文本相似度计算的形式在应用系统中起核心支撑作用1.它可以应用于各种类型的自然语言处理任务中,例 ...

最新文章

  1. selenium:学习资源
  2. linux 简介各发行版
  3. 工程师进阶之路(二)
  4. spark的python开发安装方式_PyCharm搭建Spark开发环境的实现步骤
  5. 【资源分享】Linux Scheduler
  6. linux shell 命令记录,linux常用shell命令记录
  7. php ajax设置cookie,在AJAX请求中设置Cookie?
  8. Windows下架设SVN服务
  9. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 消息管理
  10. QT 周立功 can分析仪 二次开发
  11. wxpython控件字体_wxPython获取系统字体代码
  12. MATLAB求图像的均值、中值、众数、方差、协方差、相关系数
  13. 【牛客网】养兔子(斐波那契数列)
  14. html百度地图导航起点默认定位位置,百度地图如何设置起点
  15. 数据库索引是什么 有什么优缺点
  16. 20金融学431考研应该注意些什么
  17. 【IDE】IAR for ARM官网下载链接(超级全,什么版本都有——找不到来打我)
  18. java必备基础5(集合list、set、map)
  19. 加速区块链改革促进区域经济转型升级 ——中国·平泉负氧离子产业园正式落成
  20. namenode启动报错:There appears to be a gap in the edit log. We expected txid 1, but got txid 16

热门文章

  1. 重装系统准备就绪时间太长了?
  2. OGC的WebGIS相关标准
  3. 农民伯伯-这是一本我认为每一个关…
  4. JCJC错别字检测新功能:检测日期格式
  5. RoHS、无铅制程、无卤 三种制程要求的区别
  6. Pycharm使用Anaconda的虚拟环境
  7. jQuery实现品优购放大镜案例
  8. 找出数组对象(json数组)中重复的项
  9. [Excel.2010数据透视表应用大全].Excel.Home.扫描版 百度云
  10. 计算机与科学论文3000,计算机科学技术应用论文3000字(2)