Shell截取字符串

Linux shell 中截取字符串的方式有以下几种,可以跟据 shell 的场景自行使用。

awk中函数substr

#!/usr/bin/env bash

v="13579"

A=`echo $v | awk '{print substr($0,2,3)}'`
echo $A

索引以1开始

expr substr

#!/usr/bin/env bash

v="13579"

A=`expr substr $v 2 3`
echo $A

索引以1开始

使用字符索引

#!/usr/bin/env bash

v="13579"

A=${v:1:3}
echo $A

索引以0开始

使用#和%截取

#!/usr/bin/env bash

v="/tmp/go-build733636567/b093/cgo.cgo1.go"

# 从左向右,切除第一个斜线及前面的内容
echo ${v#\/*}
# 从左向右,切除最后一个斜线及前面的内容
echo ${v##*\/}
# 从右向左,切除第一个斜线及后面的内容
echo ${v%\/*}
# 从右向左,截取最后一个斜线及后面的
echo ${v%%\/*}