linux 脚本 截取字符串,shell脚本:字符串的截取

在shell脚本中我们所有变量的存储形式都是字符串。所以对于字符串的截取来说就变得十分重要了。

而在shell脚本中,如果想要对一个字符串进行指定的截取,有多种方法可以来完成:

如下举例均用:STR="hello world my dear sister"

${STR#*char} 表示从左开始删除第一个char左边的所有字符,截取右边的字符串#!/bin/bash

STR="hello world my dear sister"

echo ${STR}

CUT=${STR#* }

echo ${CUT}

结果:

a95f23c143e2079d4fd93ff20f0033f2.png

${STR##*char} 表示从左开始删除最后一个char左边的所有字符,截取右边的字符串

将上例程序改为:CUT=${STR##*/}

结果:

0a33a1f10a4f176d4189614670c056d4.png

${STR%char*} 表示从右开始删除第一个char右边的所有字符,截取左边的字符串

将上例程序改为:CUT=${STR%/*}

同样*可以看做是通配符,表示匹配右边所有的字符删除,保留左边;

结果:

spacer.gif969b7a482bd246f1e16dad6d4a4133e4.png

${STR%char*} 表示从右开始删除最后一个char右边的所有字符,截取左边的字符串

将上例程序改为如下:CUT=${STR%%/*}[object Object]

结果:

9124eeaac7fe9147f57db31929488b3a.png

${STR:N:M}  表示从左边第N个字符开始截取M个字符,不包括第N个字符

将上例程序改为:CUT=${STR:3:8}

表示从左边第3个字符开始截取后面的8个字符;如果N为0表示从第一个字符开始,但是包括第一个字符;

结果:

af124cabe9482a04c12f530752d6df16.png

${STR:N}  表示从左边第N个字符开始截取后面所有的字符,不包括第N个字符

将上面程序改为如下:CUT=${STR:7}

表示从左边第7个字符开始取后面的所有字符;

结果:

spacer.gif492877481a470bd178ba7ad7b7e6dea1.png

${STR:0-N:M}  表示从右边第N个字符开始截取M个字符,包括第N个字符

将上例程序改为:CUT=${STR:0-7:3}

表示从右边开始数第7个字符开始,包括第七个字符本身,截取三个字符;

结果:

空格在行首的同时不输出。其他字符是输出的,大家可以下去试一试是否包含他本身

2067cc25aa7a5ddab27289be3e1d103e.png

${STR:0-N}  表示从右边第N个字符开始截取后面的所有字符,包括第N个字符

将上例程序改为:CUT=${STR:0-7}

表示从右边开始数第7个字符开始截取后面的所有字符;

结果:

空格不输出。其他字符是输出的,大家可以下去试一试是否包含他本身

a029fb478c86e46e3ad13a8cc2e01069.png

${STR} | cut -c N  表示取从左边开始数的第N个字符

示例代码:#!/bin/bash

STR="hello world my dear sister"

echo ${STR}

echo ${STR} | cut -c 7

表示截取从左边数第7个字符;

结果:

4114204bbde9de648bbadc27b98e85d9.png

${STR} | cut -c N- 表示截取从左边开始数的第N个字符往后的所有字符,包括第N个

更改如上程序:echo ${STR} | cut -c 7-

表示从截取从左边第7个字符开始剩下的所有字符;

结果:

9f9395e2656c271ef9546b650ac2909d.png

${STR} | cut -c N-M  表示截取从左边开始数的第N个字符到第M个字符之间的所有字符,包括第N个字符,但是不包括第M个字符

将程序改为如下:echo ${STR} | cut -c 2-7

表示截取从左边第2个字符到第7个字符之间的所有字符,包括第2个字符,不包括第7个字符;

结果:

0f44c522b06bb7f4f7ca63f3d18ee561.png

${STR} | cut -c -N 表示截取从左边开始数的第N个字符往前的所有字符,包括第N个字符

将程序改为如下:echo ${STR} | cut -c -7

表示从左边第7个字符开始数删除后面所有的字符,截取前面的字符;

结果:

c643061d26f41615496fc297d439f420.png

expr substr "${STR}" N M  表示从左边第N个字符开始往后截取M个字符

示例程序:#!/bin/bash

STR="hello world my dear sister"

echo ${STR}

CUT=$(expr substr "${STR}" 3 5)

echo $CUT

因为expr是命令,所以上面的$()为命令替换,表示截取从左边第3个字符开始往后截取5个字符;

结果:

800674036519ba1aaffca01355aa9332.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值