Shell字符串处理
1. 字母与ASCII码值的转换
1.1 ASCII
ASCII 是美国对于信息交换的标准代码,使用7位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
可以使用man ascii查看ASCII值列表,我们通常比较字符的大小,实际上是比对的ASCII码值。
截取如下:
1.1 字母转换为ASCII码值
- 方法一:
printf
- 方法二:
od
1.2 ASCII码值转换为字母
- 方法一:
awk
- 方法二:
printf
也可以写在一行里:
2. 进制转换
2.1 不同进制的数值赋值给变量
当然也可以多此一举,以十进制值同赋值给变量
2.2 不同进制转换为十进制输出
- 方法一:
$(( expressions ))表达式 表示方法$(( BASE#NUMBER )),BASE代表进制,可为2,8,10,16进制,NUMBER以对应进制的形式显示。
注意:这里NUMBER不需要再带进制前缀,因为BASE已经指明了,如0xFF转换为十进制,只需要$((16#FF))而不能使用$((16#0xFF))。
如果十六进制字符串前缀已经带了0X或者0x,需要先删除这两个字符。
或者
- 方法二:
bcbc进制转换需要2个内置变量,ibase和obase,ibase为输入进制,obase为输出进制,默认为十进制输出。
2.3 十进制转换为不同进制输出
- 方法一:
printf
printf不支持直接输出十进制数据,我们可以通过其它方法实现,比如用bc。
- 方法二:
bc
3. 字符串与数组的转换
3.1 数组转换为字符串
在Bash中,你可以使用"${array[@]}"或"${array[*]}"来获取数组的所有元素,并使用printf或echo结合字符串连接符""将它们转换为单个字符串。
3.2 字符串转换为数组
要将字符串转换为数组,你可以使用内置的read命令或者直接通过赋值操作。
在上面的代码中,IFS代表内部字段分隔符(Internal Field Separator),它定义了如何分割字符串。通过设置IFS=',',我们告诉read命令使用逗号作为字段分隔符。在使用完IFS之后,最好将其重置为默认值,以避免影响脚本中其他部分的执行。
4. Bash字符串处理
声明一个字符串,并赋初值,本节对字符串的处理都是这个串作为示例。
string="https://zhidao.baidu.com"
4.1 字符串变量处理
4.2 字符串长度
4.3 字符串截取
4.4 字符串替换
4.5 字符串连接
将多个字符串并排放到一起就能实现字符中的连接 。
4.6 字符串切片操作
通过 ${变量名:起始:长度} 得到子字符串。
4.7 字符串比较大小
字符串是按照从左向右对字母的ASCII值大小进行比较,不关心字符串的长度,比较过程中左侧同等位置的字母大者字符串为大。
声明:本站所有文章,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。-- mikigo
