bash技巧
字符变量截取
字符子串截取
在Bash中,可以使用变量截取功能来从一个字符串变量中提取部分子串,一般有以下几种方式:
-
从开头截取指定长度的子串:
${variable:0:length}
例如,
${variable:0:3}
表示从变量variable
的开头截取3个字符的子串。 -
从指定位置截取到结尾的子串:
${variable:position}
例如,
${variable:3}
表示从变量variable
的第4个字符开始截取到结尾的子串。 -
从指定位置截取指定长度的子串:
${variable:position:length}
例如,
${variable:3:5}
表示从变量variable
的第4个字符开始截取5个字符的子串。 -
从结尾截取指定长度的子串:
${variable:length-from-end}
例如,
${variable: -3}
表示从变量variable
的倒数第3个字符开始截取到结尾的子串。注意这里${variable: -3}
中有一个空格,用于区分第4种情况和第2种情况。 -
从结尾截取到指定位置的子串:
${variable:0:-position-from-end}
例如,
${variable:0:-3}
表示从变量variable
的开头截取到倒数第4个字符的子串。
需要注意的是,变量截取功能只能应用于字符串类型的变量,对于数字类型的变量需要先转换为字符串类型才能使用。例如:
num=12345
str=${num}
echo ${str:1:3} # 输出234
特定字符截取
Bash中还提供了一些特定字符截取的功能,可以方便地从字符串中提取特定字符之前或之后的子串,这些功能包括:
-
从开头截取到第一个特定字符之前的子串:
${variable%%pattern}
例如,
${variable%%/*}
表示从变量variable
的开头截取到第一个斜杠(/
)之前的子串。 -
从结尾截取到第一个特定字符之后的子串:
${variable#*pattern}
例如,
${variable#*/}
表示从变量variable
的最后一个斜杠之后的子串。 -
从结尾截取到最后一个特定字符之前的子串:
${variable%pattern}