【shell】两种字符串提取场景的实现
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】两种字符串提取场景的实现的更多相关文章
- shell几种字符串加密解密的方法
第一种:[ Python 与 Bash Shell 的结合 ]这个命令会让你输入一个字符串,然后会再输出一串加密了的数字. 加密代码[照直输入]:python -c 'print reduce(lam ...
- java多线程 —— 两种实际应用场景模拟
最近做的偏向并发了,因为以后消息会众多,所以,jms等多个线程操作数据的时候,对共享变量,这些要很注意,以防止发生线程不安全的情况. (一) 先说说第一个,模拟对信息的发送和接收.场景是这样的: 就像 ...
- C++两种字符串传参构造函数
第一种: #include"iostream" #include"string" using namespace std; class Motor{ prote ...
- c++两种字符串赋值方式 并介绍 C语言下遍历目录文件的方式
c++字符串声明:一种是声明字符数组并赋值,另一种是直接声明string类 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #incl ...
- 操作shell两种方式
交互式shell package main import ( "golang.org/x/crypto/ssh" "log" "os" &q ...
- 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)
前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...
- AspectJWeaver文件写入gadget详解和两种应用场景举例
目录 0 前言 1 环境 2 gadget解析 2.1 高版本Commons-Collections的防御措施 2.2 获取AspectJWeaver的调用链 2.3 gadget详解 3 两种应用场 ...
- Java多线程13:读写锁和两种同步方式的对比
读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务 ...
- javascript获取json对象的key名称的两种方法
javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来.今天试过两种可以提取json key的方法,均可以正常 ...
随机推荐
- 'webpack'提示 不是内部或外部命令
使用webpack命令行,报错:'webpack' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 解决办法: 卸载nodejs,按照默认设置从新安装一遍 Nodejs 转载:https:// ...
- Hive思维导图
- netty长链接保存方案
架构 client router server zk redis 对于router: 保存客户端和服务器对 redis clientid : serverip & port 对于server ...
- E - Emptying the Baltic Kattis - emptyingbaltic (dijkstra堆优化)
题目链接: E - Emptying the Baltic Kattis - emptyingbaltic 题目大意:n*m的地图, 每个格子有一个海拔高度, 当海拔<0的时候有水. 现在在(x ...
- response的字节流和字符流输入的区别和问题--02-response的outputStream输出数据的问题.avi
02-response的outputStream输出数据的问题.avi; [字节流] 用meta标签 第一段原始代码:写错: 03-response的Writer输出数据的问题.avi;[字符流输出] ...
- IndexedDB API
参考链接:https://wangdoc.com/javascript/bom/indexeddb.html
- shell编程 之 实践出真知(代码实例)
1,在任意一个文件夹里,新建10个空文件,文件名为t1.txt-t10.txt ,文件内容分别是11-20 ,就一行,然后把这个10个文件命名成t1.sh-t10.sh. 老司机版: $ for (( ...
- pythonのsqlalchemy外键关联查询
#!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...
- C# 并行循环
Parallel.For(); Paralle.ForEach() 异步编程模式
- [转]python中的正则表达式(re模块)
转自:https://www.cnblogs.com/tina-python/p/5508402.html 一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成 ...