shell虽然比batch顺眼点儿,但还是老话,入门容易,精通难。

1、场景一是这样的,现有字符串的内容 name: tiger; age:18; location:china;

需求:提取每个属性的值,如age的值为18。

定义了一个函数如下:

 function getValueOf(){
val=$(cat $ | grep -oP "(?<=$2)[^;]+" | sed "s/,//g" | sed 's/ //g'| tr -cd "[0-9]")
echo $val
}

做法就是提取age:和;之间的文本,这里结合grep、sed和正则。传如两个参数即可,第一个参数是整个字符串,第二个是name:。

2、场景二是这样的,提取位于两个特定字符串str1和str2之间的内容,如Fuck Jose Mourinho !

提取Jose,需要传参:第一个参数是整个字符串,第二个可以是Fuck ,第三个可以是  Mourinho,注意两个单词前后的空格。

 function getTextBtw(){
patternStr="s/.*$2\(.*\)$3.*/\1/"
text=$(cat $ | sed "$patternStr")
echo $text
}

【shell】两种字符串提取场景的实现的更多相关文章

  1. shell几种字符串加密解密的方法

    第一种:[ Python 与 Bash Shell 的结合 ]这个命令会让你输入一个字符串,然后会再输出一串加密了的数字. 加密代码[照直输入]:python -c 'print reduce(lam ...

  2. java多线程 —— 两种实际应用场景模拟

    最近做的偏向并发了,因为以后消息会众多,所以,jms等多个线程操作数据的时候,对共享变量,这些要很注意,以防止发生线程不安全的情况. (一) 先说说第一个,模拟对信息的发送和接收.场景是这样的: 就像 ...

  3. C++两种字符串传参构造函数

    第一种: #include"iostream" #include"string" using namespace std; class Motor{ prote ...

  4. c++两种字符串赋值方式 并介绍 C语言下遍历目录文件的方式

    c++字符串声明:一种是声明字符数组并赋值,另一种是直接声明string类 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #incl ...

  5. 操作shell两种方式

    交互式shell package main import ( "golang.org/x/crypto/ssh" "log" "os" &q ...

  6. 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

    前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...

  7. AspectJWeaver文件写入gadget详解和两种应用场景举例

    目录 0 前言 1 环境 2 gadget解析 2.1 高版本Commons-Collections的防御措施 2.2 获取AspectJWeaver的调用链 2.3 gadget详解 3 两种应用场 ...

  8. Java多线程13:读写锁和两种同步方式的对比

    读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务 ...

  9. javascript获取json对象的key名称的两种方法

    javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来.今天试过两种可以提取json key的方法,均可以正常 ...

随机推荐

  1. 登录mysql时的一些命令

    清屏: cls 只要输入cls然后回车运行命令,可以清屏. 查看版本号: mysql -V 注意:V一定要大写,如果不大写就错了... 登录: mysql -u用户名 -p密码 -P端口号 -h数据库 ...

  2. mysql查询反斜杠字符串问题

    马上上线发现一个问题,太坑了 写一个查询语句,明明数据库中有,但是就是查不到,后来发现是反斜杠的问题 比如 数据库中有一个字段名称为 name  存储的值为 “海尔厨电\洗碗机” 当我使用如下sql查 ...

  3. Python 16 html 基础 jQuery & Javascript研究

    基础内容 DOM操作 javascript探讨 JQuery初识 DOM innerText  ==>获取仅文本 innerHtml  ==>获取全部内容 <div id=" ...

  4. react——获取数据ajax()、$.ajax()、fetch()、axios

    ajax() import React from 'react'; import ReactDom from 'react-dom'; import ajax from './tool.js'; cl ...

  5. JAVA配置文件/反射操作

    配置文件 1. 在src目录下新建一个file, 命名为XXX.properties 2.编写配置文件: 3. import java.util.ResourceBundle; 4. 使用如下代码读取 ...

  6. 关于vue监听dom与传值问题

    1. 代码初始化一次执行部分属性为空的情况 原因: 异步加载 + 立马 传值时 直接渲染 dom里面  能实时更新 (无影响) 不能直接dom中渲染(有影响)     解决方法:需要通过监听的方式来处 ...

  7. Javascript - ExtJs - Toolbar - 工具栏

    Toolbar组件 创建工具栏 Toolbar类是一种子组件,它不能独立存在,需要依附在其它组件上面.很多容器组件都具备tbar(顶部工具栏).bbar(底部工具栏)的配置,所以可以像下面那样使用它. ...

  8. MBA(它是指营销策划,领导力和影响力,财务会计,战略和转型的IT,企业融资,用于决策的数据分析识别市场趋势获得业务优势,全球商业战略)

    推荐阅读者:玩股票的,创业的,管理者,吃货的商人,老板,管理层以及这方面的爱好者. 知识来源:https://www.edx.org/micromasters/USMx-UMD-MBA-Core-Cu ...

  9. OpenCV 入门

    1.入门攻略[安装用] https://www.cnblogs.com/linshuhe/p/5764394.html 2.VS2017配置opencv教程(超详细!!!) https://blog. ...

  10. .NET中制做对象的副本(一)

    .NET中对于复杂对象制作副本比较困难,闲暇之时写了这个方法,和大家分享. 本案例用于大型对象的副本制作,常见的应用场景就是树形对象节点的拷贝,但是也有局限性,目前使用于类里有基本类型(int sti ...