首页 > 系统相关 >关于shell变量值的截取-通过分隔符-去除前后匹配到的内容

关于shell变量值的截取-通过分隔符-去除前后匹配到的内容

时间:2023-04-19 20:55:09浏览次数:58  
标签:qq shell 匹配 1.1 变量值 分隔符 5201351

最近在工作中需要取一个变量的一部分值,举例说明,先看一个变量及值的格式,如 Server="1.1.1.1-server01"

我们可以通过各种支持切片的命令得到server01这一段,如cut,sed, awk 等等命令

其实当熟悉shell编程的可以知道,shell内部的变量处理方式也是可以得到的,可以通过echo ${Server#*-}的方式,如下图

其实原理为:# 可以理解为剪切裁剪,默认以惰性模式从最左到匹配(即非贪婪模式),两个#代表的是贪婪模式 ,如果没有匹配到,则返回变量值

因为像上样的例子,我们写上两个#效果也是一样的,如果主机名不带-符号 ,那么两个#更加保险

与 # 符号还有一个功能非常类似的,则是百分号%符号

% 也默认以默认以惰性模式匹配,只是是从右边/后面匹配至最末尾,两个% 代表的贪婪模式

[qq-5201351@localhost ~]$ echo ${Server%-*}
1.1.1.1
[qq-5201351@localhost ~]$  echo ${Server%*-*}
1.1.1.1
[qq-5201351@localhost ~]$ 

关于%符号,笔者在工作中应用相对较少,像#还是可能会用到的

如:当一个文件的绝对路径字符串变量值,我们就可以使用${FileFullName##*/}的方式得到最后一个文件名(与basedir效果一样了)

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17334586.html

 

标签:qq,shell,匹配,1.1,变量值,分隔符,5201351
From: https://www.cnblogs.com/5201351/p/17334586.html

相关文章

  • 程序员必备上传服务器Xftp及连接服务器工具Xshell
    1.下面截图为破解工具,点击执行就可以用了 ......
  • Userful shell commoand in linux
     Userfulshellcommoandinlinuxcreatefolderlist:mkdir{com,xxx,yyy,zzz,domain,enums} createfolderstructure:mkdir-pcom/xxx/yyy/xzzz/domain/enums grantthepermisstionforthewholefolder(includesubfolder):chmod777-Rfolder/ removefolders:rm -Rf......
  • bash shell notes:
    #!/bin/bashconfig_file='xxxxx'tmp_file=/tmp/tempfile.$$functionusage(){cat<<!usage:$(basename$0)optionsoptionsaaaswitchtoaaabbbswitchtobbbcccswitchtoccc!exit9}cmd=$1if[$#-eq0];......
  • Shell多线程备份数据库
    Shell这么简单的脚本语言有多线程这一说吗?答案是有的。只不过它实现起来稍微有点难理解罢了,因为它借助了命名管道实现。所谓多线程就是原本由一个进程完成的事情现在由多个线程去完成。假如一个进程需要10小时完成的事情,现在分配10个线程,给他们分工,然后同时去做这件事情,最终可能就......
  • call bash shell script by dos command
     1.atfirstwehaveascriptsaytest.sh 2.tocallitweneedabashshellenvironmentinwindows,saycygwin 3.thenrunbelowcommand: C:\XXXX\Cygwin\bin\bash--login"/cygdrive/e/scripts/test.sh"  that'sit. ......
  • 如何处理 bash shell 变量中的斜杠(/)?
    #!/bin/bash##Ourpath_r1="/nfs/apache/logs/rawlogs/access.log"##Escapepathforsedusingbashfindandreplace_r1="${_r1//\//\\/}"#replace__DOMAIN_LOG_FILE__inoursample.awstats.confsed-e"s/__DOMAIN_LOG_FILE......
  • 四月学习之LVS shell脚本配置DR模型
    1、DS脚本配置#!/usr/bin/bashVIP=172.16.1.100RS1=172.16.1.5RS2=172.16.1.6PORT=80SCHEDULER=rrDEV=eth1:1case$1instart)#配置虚拟IP地址VIP cat>/etc/sysconfig/network-scripts/ifcfg-${DEV}<<-EOF TYPE=Ethernet BOOTPROTO=none DEFROUTE=y......
  • Python + Shell 巡检服务器
    1.背景团队维护多套业务系统,有支付系统、金融系统、数据系统、核验系统等二十多套业务系统,每套业务系统有10-50台服务器不等,当前团队中存在一套自动化巡检系统,每十分钟巡检一次,有异常可实时告警。但每天还需要人工登录服务器巡检两次,因人工巡检耗时长、漏巡风险大,需要一个运维巡......
  • Shell脚本--case in
    当分支较多,并且判断条件比较简单时,使用casein语句就比较方便了。其基本格式为:caseexpressioninpattern1)statement1;;pattern2)statement2;;pattern3)statement3;;……*)statem......
  • Shell脚本--(())
    双小括号(())是BashShell中专门用来进行整数运算的命令,它的效率很高,写法灵活。但是,(())只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。 1.(()) 使用(()) 的语法格式为:((表达式))通俗地讲,就是将数学运算表达式放在((和))之间。表达式可以只有一个......