shell中按照指定字符截取两边的数据,放到变量里

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中按照指定字符截取两边的数据,放到变量里相关的知识,希望对你有一定的参考价值。

shell中按照指定字符截取两边的数据,放到变量里。 如var=a|b,按照|截取var中的a和b,分别放到A变量和B变量

#!/bin/sh
#filename: splitvar.sh
#author : cold night
# usage: ./splitvar.sh '分隔符' '字符串'
A=`echo $2 | awk -F"$1" 'print $1'`
B=`echo $2 | awk -F"$1" 'print $2'`

echo $A
echo $B

------------------------------------------------
把脚本保存为splitvar.sh, 给这个脚本执行权限:
chmod +x splitvar.sh
在脚本当前目录下使用下面格式执行
./splitvar.sh '分隔符' '要分割字符串'
比如
./splitvar.sh 'c' 'aacbb'
会输出:
aa
bb
参考技术A OLDIFS=$IFS
IFS="|"
ary=($var)
echo $ary[0]
echo $ary[1]
IFS=$OLDIFS

这个就是用IFS的设定,来把字串分成字串数组。
参考技术B #!/bin/sh
var=a|b
var1 =`echo val|awk -F "|" 'print$1'`
var2 =`echo val|awk -F "|" 'print$2'`

Shell脚本编程 - 1. 变量

字符串截取

Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取。

从指定位置开始截取

这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串。

  1. 从左边开始计数
    如果想从字符串的左边开始计数,那么截取字符串的具体格式如下:
${string:start:length}
  1. 从右边开始计数
    如果想从字符串的右边开始计数,那么截取字符串的具体格式如下:
${string:0-start:length}

同第1)种格式相比,第2)种格式仅仅多了0-,这是固定的写法,专门用来表示从字符串右边开始计数。

从指定字符(子字符串)开始截取

这种截取方式无法指定字符串长度,只能从指定字符(子字符串)截取到字符串末尾。Shell 可以截取指定字符(子字符串)右边的所有字符,也可以截取左边的所有字符。

  1. 使用#号截取右边字符
    使用#号可以截取指定字符(或者子字符串)右边的所有字符,具体格式如下:
${string#*chars}

其中string表示要截取的字符,chars是指定的字符(或者子字符串),*是通配符的一种,表示任意长度的字符串。*chars连起来使用的意思是:忽略左边的所有字符,直到遇见chars(chars不会被截取)。
如果希望直到最后一个指定字符(子字符串)再匹配结束,那么可以使用##,具体格式为:

${string##*chars}
  1. 使用%截取左边字符
    使用%号可以截取指定字符(或者子字符串)左边的所有字符,具体格式如下:
${string%chars*}

请注意*的位置,因为要截取chars左边的字符,而忽略chars右边的字符,所以*应该位于chars的右侧。其他方面%和#的用法相同,这里不再赘述。

变量运算

a=`expr $a + 1`

字符替换

小写转换成大写

UPPERCASE=$(echo $VARIABLE | tr ‘[a-z]‘ ‘[A-Z]‘)

大写转换成小写

LOWERCASE=$(echo $VARIABLE | tr ‘[A-Z]‘ ‘[a-z]‘)





以上是关于shell中按照指定字符截取两边的数据,放到变量里的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本编程 - 1. 变量

如何用shell脚本语言去截取字符串

2shell中处理字符串

shell脚本里,如何删除变量的最后一个字符?

shell字符串截取

shell脚本里,如何删除变量的最后一个字符?