首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在bash脚本中获取两个字符串之间的数据有困难

在bash脚本中获取两个字符串之间的数据可以通过使用字符串处理函数和正则表达式来实现。以下是一种可能的解决方案:

  1. 使用字符串处理函数expr和正则表达式来获取两个字符串之间的数据。假设我们有两个字符串str1str2,我们想要获取它们之间的数据。
代码语言:bash
复制
str="This is a sample string"
str1="is"
str2="sample"

result=$(expr match "$str" ".*$str1\(.*\)$str2.*")
echo $result

上述代码中,expr match命令使用正则表达式匹配字符串str,并提取出位于str1str2之间的数据。结果存储在变量result中,并打印输出。

  1. 如果你想要获取多个匹配的数据,可以使用循环和正则表达式的全局匹配功能。
代码语言:bash
复制
str="This is a sample string"
str1="is"

while [[ $str =~ $str1(.*) ]]; do
    result="${BASH_REMATCH[1]}"
    echo $result
    str=${str#*"${BASH_REMATCH[0]}"}
done

上述代码中,使用while循环和正则表达式$str1(.*)来匹配字符串str中的所有匹配项。每次匹配成功后,将匹配结果存储在变量result中,并打印输出。然后,使用${str#*"${BASH_REMATCH[0]}"}来更新字符串str,去除已匹配的部分,以便继续匹配下一个。

这是一种在bash脚本中获取两个字符串之间数据的方法。请注意,这只是一种解决方案,具体实现可能因实际需求和情况而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Shell编程

shell变量 1 简介 shell脚本, 定义变量时,变量名不加美元符号($),如: your_name=“runoob.com” 注意 : 变量名和等号之间不能有空格,这可能和你熟悉所有编程语言都不一样...,单引号字符串变量是无效; 单引号字串不能出现单独一个单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。...我们可以执行 Shell 脚本时,向脚本传递参数,脚本获取参数格式为:$n。...' ;; esac 输入不同内容,会有不同结果,例如: 输入 1 到 4 之间数字: 你输入数字为: 3 你选择了 3 ​ 6 跳出循环 循环过程,有时候需要在未达到循环结束条件时强制跳出循环...函数体内部,通过 n 形式来获取参数值,例如,1表示第一个参数, 带参数函数示例: #!

5K11

高级shell脚本编程指南_python快速入门

is is,如下图 查找字符串:用于查找字符位置,输出结果为字符字符串中所占数据位置,如果查找多个字符,那哪个字母先出现就计算哪个,如下查找iti和t两个字符,t先出现,输出为1 string...} # 取所有 # 取得数组单个元素长度 lengthn=${#array_name[n]} # 取特定 5.shell传递参数 执行 Shell 脚本时,向脚本传递参数,脚本获取参数格式为:$.../bin/bash val=`expr 3 + 2` echo "两之和为 : $val" 1 2 3 4 执行脚本后,输出结果为 两之和为 : 5 1 6.2 算数运算符 shell支持常用的如下表...# 使用通配符获取上一条指令返回值 执行脚本,运行如下 两个数字进行相加运算... 输入第一个数字: 1 输入第二个数字: 2 两个数字分别为 1 和 2 !...9.2 参数定义 此外想要使用shell函数传递参数时,需要在函数体内部,通过 n 形式来获取参数值,与其他语言不同是,这不是定义函数时候就给定参数,而是函数体获取参数,例如,1表示第一个参数

3.2K10
  • 【知识总结】Shell脚本编程入门

    获取数组元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。 定义数组 Shell ,用括号来表示数组,数组元素用"空格"符号分割开。...2.4 Shell 传递参数 我们可以执行 Shell 脚本时,向脚本传递参数,脚本获取参数格式为:$n。.../bin/bash val=`expr 2 + 2` echo "两之和为 : $val" 运行实例 » 执行脚本,输出结果如下所示: 两之和为 : 4 两点注意: 表达式和运算符之间要有空格,例如... MAC shell expr 语法是:$((表达式)),此处表达式 "*" 不需要转义符号 "" 。 关系运算符 关系运算符只支持数字,不支持字符串,除非字符串值是数字。...,使用变量名获取列表的当前取值。

    3.9K20

    Shell 编程入门 (转载非原创)

    五、函数 1、 函数定义 Shell 可以用户定义函数,然后 shell 脚本可以随便调用。 下面的例子定义了一个函数并进行调用: #!...函数脚本执行结果: -----函数开始执行----- 这是我第一个 shell 函数! -----函数执行完毕----- 2、 函数参数 shell ,调用函数时可以向其传递参数。...函数体内部,通过 $n 形式来获取参数值,例如,$1 表示第一个参数,$2 表示第二个参数... 带参数函数示例: #!...另外,还有几个特殊字符用来处理参数: $# 传递到脚本或函数参数个数 $* 以一个单字符串显示所有向脚本传递参数 $$ 脚本运行的当前进程ID号 $!...-ne 检测两个数是否不相等,不相等返回 true。 -gt 检测左边是否大于右边,如果是,则返回 true。 -lt 检测左边是否小于右边,如果是,则返回 true。

    1.7K21

    Shell base用法描述

    bash是Linux和Unix下shell。 本教程关注Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 日常工作中被广泛使用。...存在三种变量 局部变量:::局部变量脚本或命令定义,仅在当前shell实例中有效,其他shell启动程序不能访问局部变量。...字符串 字符串定义 bash字符串可以用单引号和双引号,其区别就是,单引号内不能解释变量,而双引号内可以解释变量 name="jianjian" echo '$name' echo "$name"...传参 使用方法 我们使用脚本文件时候可以向文件传递一些参数,脚本则可以使用n这种方式来获取参数,n这种方式来获取参数,0代表文件名,1代表是第一个参数,1代表是第一个参数,2代表第二个参数,以此类推...(只%b格式指示符控制下参数字符串中有效),而且,任何留在参数里字符、任何接下来参数以及任何留在格式字符串字符,都被忽略 \f 换页(formfeed) \n 换行 \r 回车(Carriage

    32820

    【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件变量

    例如,两个数相加: 注意: 表达式和运算符之间要有空格 ,例如 2+2 是不对,必须写成 2 + 2 。...下面的脚本提示输入 1 到 4 ,与每一种模式进行匹配: 输入不同内容,会有不同结果,例如: 6 跳出循环 循环过程,有时候需要在未达到循环结束条件时强制跳出循环, Shell 使用两个命令来实现该功能...: 2.1 实例 执行脚本,输出结果如下所示: 2.2 获取数组所有元素 使用 @ 或 * 可以获取数组所有元素,例如: 执行脚本,输出结果如下所示: 2.3...获取数组长度 获取数组长度方法与获取字符串长度方法相同,例如: 执行脚本,输出结果如下所示: 3 遍历数组 3.1 方式一 3.2 方式二 1.10 加载其它文件变量...Shell 文件包含语法格式如下: 2 练习 定义两个文件 test1.sh 和 test2.sh , test1 定义一个变量 arr=(java c++ shell), test2

    3.1K30

    Mac下Shell脚本基础用法

    类似于 C 语言,数组元素下标由 0 开始编号。获取数组元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。...定义数组 Shell,用括号来表示数组,数组元素用“空格”符号分隔开。定义数组一般形式为: # 数组名=(值1 值2 ......echo ${array_name[@]} #11 12 13 14 获取数组长度 获取数组长度方法与获取字符串长度方法相同,例如: # 获得数组元素个数 length=${#array_name...3.4、传递参数 我们可以执行Shell脚本时候,向脚本传递参数,脚本获取参数格式为:$n。.../bin/bash val=`expr 2 + 2` echo "两之和为 : $val" 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对,必须写成 2 + 2,这与我们熟悉大多数编程语言不一样

    4.6K40

    Shell 编程语法基础

    脚本,定义变量直接赋值即可,使用变量时需要在变量名前加美元符号$,注意定义变量时变量名和等号之间不能有空格。 ...获取数组元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。 定义数组 Shell ,用括号来表示数组,数组元素用”空格”符号分割开。...值n) 读取数组 读取数组元素值一般格式是: ${数组名[下表标]} 使用 @ 符号可以获取数组所有元素,例如: echo ${array_name[@]} 获取数组长度 获取数组长度方法与获取字符串长度方法相同.../bin/bash val=`expr 3 + 6` echo "两之和为:" ${val} # 两之和为:9 注意: 表达式和运算符之间要有空格,例如 2+2 是不对,必须写成 2 + 2,这与我们熟悉大多数编程语言不一样..." else echo "输入两个字符串不相等" fi 执行脚本(sh comm_test.sh eere wdwe2),输出如下: 两个数不相等  传递参数为: eere wdwe2  输入两个字符串

    2.3K10

    Shell

    /test.sh 运行方法二 直接运行解释器,其参数就是shell脚本文件名 /bin/sh test.sh 二、语法 特殊符号含义大全 两个反引号表示整体作为一个字符串处理。 0....传递参数 脚本获取参数格式为:n。n 代表一个数字,1 为执行脚本第一个参数,2 为执行脚本第二个参数。 其中,0 为执行文件名。...# $#: 传递到脚本参数个数 # $*: 以一个单字符串显示所有向脚本传递参数,$@类似 echo "$*" ....运算符 expr 是一款表达式计算工具,使用它能完成表达式求值操作。 表达式用esc键下反引号扩起来,条件表达式要放在[],并且运算符与参与运算之间要用空格隔开。...,for循环即执行一次所有命令,使用变量名获取列表的当前取值。

    1.3K20

    Shell入门

    Bash 日常工作中被广泛使用。...单引号 str='this is a string' 单引号字符串限制: 单引号里任何字符都会原样输出,单引号字符串变量是无效; 单引号字串不能出现单独一个单引号(对单引号使用转义符后也不行...数组 Shell ,用括号来表示数组,数组元素用”空格”符号分割开。定义数组一般形式为: 数组名=(值1 值2 ....../bin/bash val=`expr 2 + 2` echo "两之和为 : $val" 表达式和运算符之间要有空格,例如 2+2 是不对,必须写成 2 + 2,这与我们熟悉大多数编程语言不一样...输入第一个数字: 1 输入第二个数字: 2 两个数字分别为 1 和 2 ! 输入两个数字之和为 3 ! 函数返回值调用该函数后通过 $? 来获得。 注意:所有函数使用前必须定义。

    73310

    Shell编程基础

    注: 本文说都是bash(Bourne Again Shell),是sh(Bourne Shell)扩展 扩展名不会影响脚本执行,见名知意就行,一般情况下扩展名是sh Shell注释:以 #...获取字符串长度 string="abcd" echo ${#string} #输出 4 提取子字符串 #从第2个字符开始截取4个字符 string="runoob is a great site"...……) 或 array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen 读取数组 ${数组名[下标]} 使用@符号可以获取数组所有元素...执行脚本时候可以向脚本传递参数,脚本获取参数格式为:$n Shell基本运算符 原生bash不支持数学运算,但可以通过 awk 和 expr 命令来实现 expr 是一款表达式计算工具,可以用来完成表达式求值操作.../bin/bash val=`expr 2 + 2` echo "两之和为 : $val" 注意:条件表达式要放在方括号之间,并且要有空格,例如: [\(a==\)b] 是错误,必须写成 [ $a

    78520

    Shell 命令行,实现一个获取任意位数随机密码脚本

    Shell 命令行,实现一个获取任意位数随机密码脚本 每次我们想要获得一个密码时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本。...这两天在学习 bash Shell 所以,想用同样逻辑实现一个获取任意位数随机密码脚本。...不过没关系,善用搜索引擎,这些问题都能解决 任意位数,所以需要接受传参 如果没有传参,则要给一个默认值 需要实现随机效果 字符串追加,这个倒是蛮简单 获取字符串中指定位数字符 数字向上取整 实现代码...$length;i++));do # 取得一个随机 # $RANDOM 是获取一个小于 32767 随机 # 所以除以 32767 就可以得到一个 0 - 1 之间随机小数...将 ~/.bin 设置为环境变量 cd ~ mkdir .bin vim .bash_profile .bash_profile 文件添加 export PATH="$PATH:~/.bin"

    1.1K60

    shell脚本实例

    . $ /等 使用grep从一个模式匹配返回末尾行: 和正则表达式一起运行grep可以很容易从标识文件或者输出获取某些行. # cat /etc/passwd | awk '$1 ~ /^daemon...}{pNR=NR;p0=$0}' /etc/passwd  第一个命令文件查找模式串,当处理文件每一行内容时,分别在变量p0和pNR存储匹配行之前一行和该行记录(awk内部变量NR表示当前输入行记录.../bin/bash echo "请出入数字名:" read x y z=`expr $x + $y`   注意:在做算法时候变量和符号之间需要空格 echo $z 字符串比较:(=、!...=、-n、-z字符串是否相等,不相等,大于零,等于零) #!/bin/bash read x y [ "$x" = "$y" ]   echo $? 函数定义:计算两之和  #!...join hello hello1         将两个文件相同部分文字结合起来输出到终端 shell脚本实际说来就是用于系统管理和文件操作用,能够方便自如处理大量重复性工作。

    3.2K60

    Shell 快速指南

    /usr/bin/env bash 这样做好处是,系统会自动 PATH 环境变量查找你指定程序(本例bash)。相比第一种写法,你应该尽量用这种写法,因为程序路径是不确定。...变量 跟许多程序设计语言一样,你可以 bash 创建变量。 Bash 没有数据类型,bash 变量可以保存一个数字、一个字符、一个字符串等等。...-ne 检测两个数是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 -gt 检测左边是否大于右边,如果是,则返回 true。...这里可以找到有关bash单双括号区别的答案。 使用if if使用上跟其它语言相同。如果括号里表达式为真,那么then和fi之间代码会被执行。fi标志着条件代码块结束。...函数 脚本,我们可以定义并调用函数。跟其它程序设计语言类似,函数是一个代码块,但有所不同。 bash ,函数是一个命令序列,这个命令序列组织某个名字下面,即 函数名 。

    3.3K101

    Linux Shell编程入门

    bash完全兼容sh,也就是说,用sh写脚本可以不加修改bash执行。...2.3 变量类型 运行shell时,会同时存在三种变量: 1) 局部变量 局部变量脚本或命令定义,仅在当前shell实例中有效,其他shell启动程序不能访问局部变量。...6、Shell数组 bash支持一维数组(不支持多维数组),并且没有限定数组大小。类似与C语言,数组下标由0开始。 Shell,用括号来表示数组,数组元素用“空格”符号分割开。...\nIt is a test"ok和It之间有换行效果,而使用bash标准下只有echo -e“OK\nIt is a test”ok 和 it 之间才会有换行效果 printf 命令用于格式化输出...如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数计算结果,脚本需要时候访问这个变量来获得函数返回值。 调用函数只需要给出函数名,不需要加括号。

    3.1K10

    shell编程:编程就是这么简单

    /bin/bash声明脚本类型(更为普遍来说是语言解释器路径),为bash脚本,除此之外其余#后面均为注释内容;之后为脚本环境变量例如PATH和LANG设置,对于命令执行非常重要;第三部分为主要程序执行部分...exit 1 fi 运行示例如下: if可以使用判断符号有: ①字符串判断 str1== str2 当两个串有相同内容、长度时为真 str1!...shell脚本,命令行参数可以直接加在脚本后面,脚本里使用默认变量“$n”来调用(n为非负整数),下面通过一个小例子来了解shell脚本命令行参数使用方法: echo $0 echo $1 echo...getopts从命令获取这些参数,并且删去了“-”,并将其赋值第二个参数,如果带有自己参数,这个参数赋值“OPTARG”。...;两个冒号就表示这个选项参数是可选,即可以有参数,也可以没有参数,但要注意有参数时,参数与选项之间不能有空格。

    83140

    Shell基础入门

    echo $LANG Shell自定义变量 就是自己定义变量 分类: 自定义局部变量 自定义常量 自定义全局变量 自定义局部变量 就是定义一个脚本文件变量,只能在这个脚本文件中使用变量。...bash环境,变量默认类型都是字符串,无法直接进行数值运算。 变量值如果有空格,必须使用双引号括起来。 不能使用Shell关键字作为变量名称。...获取所有输入参数个数 案例需求: demo4.sh 输出输入参数个数 vim demo4.sh #添加内容 echo "输入参数个数为:"$# #结束 [root@localhost ~]#...注意: Bash Shell 只支持一维数组,不支持多维数组。 数组定义 语法 Shell,用括号 () 来表示数组,数组元素之间用空格来分割。...可以用在 [],[[]] , 不可以(()) 演示 operation5.sh脚本代码 #!

    2.4K31

    学习笔记0402----shell基础知识

    2.shell 作用详析 Shell 除了能解释用户输入命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序处理结果; 多个程序之间传递数据,把一个程序输出作为另一个程序输入...bash 兼容 sh 意味着,针对 sh 编写 Shell 代码可以不加修改地 bash 运行。...[a-z] a-z内字符组成字符串。 [A-Z] A-Z内字符组成字符串。 [0-9] 数字串。 \octal 一个三位八进制,对应有效ASCII字符。...因此[O2]匹配OO字符串。 8.7 split 将一个大文件分割成很多个小文件 参数 -b:值为每一输出档案大小,单位为 byte。 -C:每一输出档,单行最大 byte 。...,也可以这样理解,exec执行脚本时候是新开了一个bash,执行完bash直接退出,不会在回到终端。

    72050

    Shell脚本学习2

    Shell脚本学习2 运算符 Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。...同算数运算符`==` -ne 检测两个数是否相等,不相等返回 true -gt 检测左边是否大于右边,如果是,则返回 true。 -lt 检测左边是否小于右边,如果是,则返回 true。...-ge 检测左边是否大等于右边,如果是,则返回 true。 -le 检测左边是否小于等于右边,如果是,则返回 true。 关系运算符只支持数字,不支持字符串,除非字符串值是数字。 #!...index STRING CHARS #STRING查找字符CHARS首次出现位置,没有找到返回0 length STRING #字符串长度 数组 bash...支持一维数组(不支持多维数组),并且没有限定数组大小,数组元素下标由0开始编号 获取数组元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

    18020

    Linux shell 学习笔记

    /test.sh #使脚本具有执行权限 变量类型 运行shell时,会同时存在三种变量: 1) 局部变量 局部变量脚本或命令定义,仅在当前shell实例中有效,其他shell启动程序不能访问局部变量...定义数组 Shell ,用括号来表示数组,数组元素用”空格”符号分割开。定义数组一般形式为: 数组名=(值1 值2 ......@]} 获取数组长度 获取数组长度方法与获取字符串长度方法相同,例如: # 取得数组元素个数 length=${#array_name[@]} # 或者 length=${#array_name...$# 传递到脚本参数个数 $* 以一个单字符串显示所有向脚本传递参数。...printf 使用引用文本或空格分隔参数,外面可以 printf 中使用格式化字符串,还可以制定字符串宽度、左右对齐方式等。

    1K30
    领券