字符串处理
截取子字符串
使用expr命令
- 基本用法
- expr substr $var1 起始位置 截取长度
[root@Hincy:~]# var1="CentOS6.5"
[root@Hincy:~]# expr substr $var1 1 6
CentOS
[root@Hincy:~]# expr substr $var1 7 3
6.5
使用cut命令
- 基本用法
- 命令输出 | cut -c 起始位置-结束位置
- 命令输出 | cut -d ‘分隔符’ -f 字段编号…
[root@Hincy:~]# var1="CentOS6.5"
[root@Hincy:~]# echo $var1 | cut -c 5-6
OS
[root@Hincy:~]# echo $var1 | cut -c -6 //简略用法,缺省从1开始
CentOS
[root@Hincy:~]# echo $var1 | cut -d 't' -f 2
OS6.5
使用${}表达式
- 基本用法
- ${var1:起始位置:截取长度}
- ${var1::截取长度}
注:第一个起始位置的编号为0
[root@Hincy:~]# var1="CentOS6.5"
[root@Hincy:~]# echo ${var1:1:4}
entO
[root@Hincy:~]# echo ${var1::4}
Cent
[root@Hincy:~]# echo ${var1:6:3}
6.5
字符串替换
使用${}表达式
- 基本用法
- ${var1/old/new}
- ${var1//old/new}
[root@Hincy:~]# var1="CentOS6.5 Server"
[root@Hincy:~]# echo ${var1/CnetOS/RHEL}
RHEL6.5 Server
[root@Hincy:~]# echo ${var1/e/##} //只有第一个e被替换
C##ntOS6.5 Server
[root@Hincy:~]# echo ${var1//e/##} //所有的e都被替换
C##ntOS6.5 S##rv##r
批量替换应用
- 根据模板字串创建新的/etc/passwd记录
- 参照root的记录作为模板
- 新用户的登陆名称由变量UN提供
[root@Hincy:~]# var1 = "root:x:0:0:root:/root:/bin/bash"
[root@Hincy:~]# UN="lisi";echo ${var1//root/$UN}
lisi:x:0:0:lisi:/lisi:/bin/bash
[root@Hincy:~]# UN="wangwu";echo ${var1//root/$UN}
wangwu:x:0:0:wangwu:/wangwu:/bin/bash
tr单字替换工具
- 基本用法
- 命令输出 | tr ‘abc’ ‘ABC’
- 命令输出 | tr -d ‘abc’
[root@Hincy:~]# head -1 /etc/passwd | tr 'or' 'OR' //将字符o、r都改成大写
ROOt:x:0:0:ROOt:/ROOt:/bin/bash
[root@Hincy:~]# head -1 /etc/passwd | tr -d ':' //删除所有的:字符
rootx00root/root/bin/bash
路径分割
-
文件路径 /etc/passwd 的含义
- 文件所在的位置:/etc
- 文件名称:passwd
-
目录路径 /boot/grub 的含义
- 目录所在的位置:/boot
- 目录名称:grub
dirname取目录位置
- 基本用法
- dirname “字符串”
[root@Hincy:~]# dirname "/etc/passwd"
/etc
[root@Hincy:~]# var1="/boot/grub"
[root@Hincy:~]# dirname $var1
/boot
basename 取基本名称
- 基本用法
- basename “字符串”
[root@Hincy:~]# basename "/etc/passwd"
passwd
[root@Hincy:~]# var1="/boot/grub"
[root@Hincy:~]# basename $var1
grub
使用随机字符串
随机设备或工具
- 常见的随机性工具
- 随机数变量:RANDOM
- 特殊设备文件:/dev/urandom
- UUID生成命令:uuidgen
[root@Hincy:~]# uuidgen
d20dff5d-2859-42ea-8de4-3f76a6bbaea
[root@Hincy:~]# head -1 /dev/urandom
afsnlnqafoanfafna}M
[root@Hincy:~]#
随机信息的转换
- md5sum校验工具
- 根据输入文本计算出256位(32字符)的MD5编码值
- 输入文本有任何差异,编码结果都不会相同
[root@Hincy:~]# echo $RANDOM | md5sum
34bbrl2lhj1hjhvjhbrk1b2-
[root@Hincy:~]# echo $RANDOM | md5sum
13413h1b4l1yb13y51i9189b -
[root@Hincy:~]# head -1 /dev/urandom | md5sum
c211fib1ifnp1i31ru24bth2b -
[root@Hincy:~]# head -1 /dev/urandom | md5sum
09asncinaif0f080q83rnkfacibcei
截取随机字符串
- 使用cut命令
- 直接利用随机信息的md5sum转换结果
- 任意截取32位以内的连续字串
[root@Hincy:~]# echo $RANDOM | md5sum | cut -c -8 //取8位随机串
1badd736
[root@Hincy:~]# echo $RANDOM | md5sum | cut -c -16 //取16位随机串
dd736hsyco9w7h3s
处理uuidgen随机串
- 默认会有 -连字符
- 再使用cut命令截取所需长度的字符串
[root@Hincy:~]# uuidgen | tr -d '-'
absjhr2b3uotb2u3ybfy8 2b8fy2un2
[root@Hincy:~]# uuidgen | cut -c -8
E6e0f322
[root@Hincy:~]# uuidgen | tr -d '-' | cut -c -16
E6e0f322E6e0f322
以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!