Shell对字符串的处理
1.截取子字符串
expr命令
- 基本用法:
expr substr $var1 起始位置 截取长度
cut命令[用的多]
-
基本用法:
- 命令输出 | cut -c 起始位置-结束位置
- 命令输出 | cut -d '分隔符' -f 字段编号....
使用${ }表达式
-
基本用法:
- ${var1:起始位置:截取长度}
- ${var1::截取长度}
2.字符串替换
使用${ }表达式
-
格式:
- ${var1/old/new}
单个替换- ${var1//old/new}
全部替换
-
批量替换应用实例
根据模板字符串创建新的/etc/passwd记录
– 参照root的记录作为模板
– 新用户登录名称由变量UN提供
tr 单字替换工具
-
基本用法
- 命令输出 | tr 'abc' 'ABC'
- 命令输出 | tr -d 'abc'
3.路径分割
路径的处理
- 文件路径/etc/passwd的含义
- 文件所在位置:/etc
- 文件名称:passwd
- 目录路径 /boot/grub的含义
- 目录所在的位置:/boot
- 目录名称:grub
dirname 去目录位置
- 基本用法:
dirname "字符串"
basename 取基本名称
- 基本用法:
basename "字符串"
4.随机字符串
常见的随机性工具
- 随机数变量:
RANDOM
- 特殊设备文件:
/dev/urandom
- UUID 生成命令:
uuidgen
md5sum校验工具
目的: 进行随机信息的转换
特性:根据输入文本计算出256位(32字符)的MD5编码值;输入文本有任何差异,编码结果都会不相同
截取随机字符串
使用cut命令
- 直接利用随机信息的md5sum转换结果
- 任意截取32位以内的连续字符串
处理uuidgen随机串
- 默认会有 - 连字符
- 可利用
tr 命令删除 - 连字符
- 使用
cut 命令截取所需长度的字符串
- 可利用
5.命令替换
提取命令输出
适用场景:
- 简化运维任务,在命令行嵌入另一个命令的输出结果
- 将命令的输出保存到指定变量
使用 ` 反撇号
基本用法: 可执行命令