bash 参数替换中的模式匹配

参数替换中的模式匹配

# 和## 从字符串的左边开始,并且去掉左边的字符串,

% 和 %% 从字符串的右边开始,并且去掉右边的子串.

例如

name=hello lhhs "root"

name=${name#‘"‘}; name=${name%‘"‘}

结果为root

################################Start Script#######################################

1 #!/bin/bash

2 # patt-matching.sh

3

4 # 使用# ## % %%来进行参数替换操作的模式匹配.

5

6 var1=abcd12345abc6789

7 pattern1=a*c  # * (通配符) 匹配a - c之间的任何字符.

8

9 echo

10 echo "var1 = $var1"           # abcd12345abc6789

11 echo "var1 = ${var1}"         # abcd12345abc6789

12                               # (alternate form)

13 echo "Number of characters in ${var1} = ${#var1}"

14 echo

15

16 echo "pattern1 = $pattern1"   # a*c  (everything between ‘a‘ and ‘c‘)

17 echo "--------------"

18 echo ‘${var1#$pattern1}  =‘ "${var1#$pattern1}"    #         d12345abc6789

19 # 最短的可能匹配, 去掉abcd12345abc6789的前3个字符

20 #                     |-|               ^^^

21 echo ‘${var1##$pattern1} =‘ "${var1##$pattern1}"   #                  6789

22 # 最远的匹配,去掉abcd12345abc6789的前12个字符.

23 #                |----------|      ^^^^

24

25 echo; echo; echo

26

27 pattern2=b*9            # ‘b‘ 到‘9‘之间的任何字符

28 echo "var1 = $var1"     # 还是 abcd12345abc6789

29 echo

30 echo "pattern2 = $pattern2"

31 echo "--------------"

32 echo ‘${var1%pattern2}  =‘ "${var1%$pattern2}"     #     abcd12345a

33 # 最近的匹配, 去掉abcd12345abc6789的最后6个字符

34 #                           |----|  ^^^^

35 echo ‘${var1%%pattern2} =‘ "${var1%%$pattern2}"    #     a

36 # 最远匹配, 去掉abcd12345abc6789的最后12个字符

37 #                |-------------|  ^^^^^^

38

39 # 记住, # 和## 从字符串的左边开始,并且去掉左边的字符串,

40 #           % 和 %% 从字符串的右边开始,并且去掉右边的子串.

41

42 echo

43

44 exit 0

时间: 2024-10-12 04:05:54

bash 参数替换中的模式匹配的相关文章

Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)

阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 总结: 我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一

Linux Shell参数替换

Linux Shell参数替换 2013-06-03 10:01 by 轩脉刃, 1816 阅读, 0 评论, 收藏, 编辑 Bash中的符号的作用是参数替换,将参数名替换为参数所代表的值.对于 来说,大括号是可选的,即A和 {A}代表同一个参数. ${}带冒号的有下面几种表达式: ${parameter:-word} 如果parameter为null或者未设置,整个参数替换表达式值为word ${parameter:=word} 如果parameter为null或者未设置,整个参数替换表达式值

Linux江湖10:Bash脚本编程语言中的美学与哲学

我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学.这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程.阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了.前几天看到有博友在院子里发学习Bash的心得(这里http://www.cnblogs.com/viroyiheng/p/3988

Linux Bash脚本编程语言中的美学与哲学

我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我心中,我认为Bash就是

Bash 4.4 中新增的 ${[email protected]} 语法

Bash 4.4 中新增了一种 ${...} 语法,长这样:${[email protected]}.根据不同的 operator,它展开后的值可能是 parameter 这个参数的值经过某种转换后的值,又可能是关于 parameter 参数自身的某种信息.这句话太抽象了,还是看下面的详细解释吧. operator 一共有 5 种值,分别是 Q.E.P.A.a,都是单个的字母. Q quote 的缩写,这个 operator 的功能是把 parameter 的值加上合适的引号,从而转换成在脚本中

.net mvc RazorEngine 字符串razor参数替换

在.net中有一个比较好的字符串参数替换的方案RazorEngine推荐大家看看原网站,然后做个小联系然后你就懂啦 首先呢得下载一个吧, vs中tools-> Library Paging Manager->Manager Nuget 在然后呢Install-Package RazorEngine 等待搜索结束吧,然后下载下来两个dll RazorEngine.dll  没说的一定要引用到工程里面的 System.Web.Razor.dll 这个dll工程里面是引用了的  多以会提示替换,别犹

shell的替换运算符和模式匹配运算符

shell 的替换运算符和模式匹配运算符 替换运算符: (1) ${varname:-word}       :如果varname存在且非null,则返回其值:否则,返回word. (2) ${varname:=word}      :如果varname存在且非null, 则返回其值,否则,设置其为word并返回. (3) ${varname:?message} :如果varname存在且非null,则返回其值,否则,返回 varname:message,并退出当前的命令或脚本.省略messag

awk中的模式匹配

awk中的模式匹配在awk程序命令中非常重要,它决定着被处理数据文件中到底哪一行需要处理,并且做出什么样的处理. 首先,我们先看awk命令的基本语法:awk pattern { actions }   注意:pattern就是指的匹配模式,大括号外加两端空格的是处理动作. 上面awk后面的匹配模式和处理行为至少得有一个,不能两个同时缺失.例如,上篇博文中awk { print }   就表示只做输出到屏幕的处理动作,由于没有匹配模式,那么所有行都需要被输出. 实际上,我们在使用awk的时候,大部

java预编译SQL和参数替换 更新····PSF

原文:java预编译SQL和参数替换 更新····PSF 源代码下载地址:http://www.zuidaima.com/share/1550463668718592.htm 功能为将项目中输出的预编译SQL语句,转换为带实际参数的SQL语句. 代码为javaSwing,启动类为AppStart.java. 界面如下图: