在Bash中如何提取子字符串

时间:2019-11-20 08:53:52  来源:igfitidea点击:

在bash shell中,如何提取字符串中的子字符串保存到shell变量中?
shell脚本中如何获取子字符串?

在Bash中提取子字符串

语法为:

${parameter:offset:length}

子字符串扩展是一项bash功能。
用于截取从offset开始,长度为length的子字符串。

例如,假设$u定义如下:

u="welcome theitroad"

使用子字符串参数扩展提取子字符串:

var="${u:8:8}"
echo "${var}"

输出示例:

theitroad

第1个8表示偏移位置,第2个8表示长度。

使用IFS截取子字符串

IFS(Internal Field Separator的缩写)内部字段分隔符,用于将字符串根据符号拆分。
默认值是 空格,tab符和换行符。

示例如下:

u="this is a test"
set -- $u
echo ""
echo ""
echo ""
echo ""

输出示例:

this
is
a
test

示例2

u="this / is/a/test"
IFS='/'
set -- $u
echo ""
echo ""
echo ""
echo ""

输出示例:

this 
 is
a
test

bash shell使用cut命令截取子字符串

语法为:

u="this is a test"
echo "$u" | cut -d' ' -f 4
echo "$u" | cut --delimiter=' ' --fields=4

var="$(cut -d' ' -f 4 <<< $u)"
echo "${var}"

-d' ': 表示使用空格作为分隔符
-f 4: 选择第4个字段作为结果
var="$(cut -d' ' -f 4 <<< $u)"将结果保存到变量var中