字符串处理
- 截取字符串
expr:expr substr $var1 起始位置截取长度
[root@localhost test]# expr substr "hello shell" 7 5
shell
cut: cut -c起始位置-结束位置;cut -d '分隔符’-f 字段编号…
[root@localhost test]# cat demo10.sh
#!/bin/bash
var1="Centos8.1"
echo $var1 | cut -c 5-7
#简略用法,缺省从1开始
echo $var1 | cut -c -6
#拆分并输出拆分后的第一段
echo $var1 | cut -d "s" -f1
[root@localhost test]# sh demo10.sh
os8
Centos
Cento
${}表达式
${var1:起始位置:截取长度}$var1:截取长度} 起始位置从0开始
[root@localhost test]# cat demo11.sh
#!/bin/bash
var1="centos8.1"
echo ${var1:3:4}
echo ${var1::6}
[root@localhost test]# sh demo11.sh
tos8
centos
- 替换字符串
${}表达式
${var1/old/new}
${var1//old/new}
[root@localhost test]# cat demo11.sh
#!/bin/bash
var1="Centos8.1 Server"
echo ${var1:3:4}
echo ${var1::6}
echo ${var1/8.1/7.2}
#替换一个e
echo ${var1/e/?}
#替换多个e
echo ${var1//e/?}
[root@localhost test]# sh demo11.sh
tos8
Centos
Centos7.2 Server
C?ntos8.1 Server
C?ntos8.1 S?rv?r
tr 单字符替换
命令输出│ tr 'abc’ ‘ABC’; 命令输出│ tr -d ‘abc’
[root@localhost test]# echo "hello world" | tr 'lo' 'LO'
heLLO wOrLd
[root@localhost test]# echo "hello world" | tr -d 'l'
heo word
- 路径分割
dirname 取目录位置
basename 取基本名称
[root@localhost test]# dirname /opt/test/demo11.sh
/opt/test
[root@localhost test]# basename /opt/test/demo11.sh
demo11.sh
- 随机字符串
常见的随机性工具:
1.随机数变量:RANDOM
2.特殊设备文件:/dev/urandom
3.UUID生成命令: uuidgen
md5sum校验工具
根据输入文本计算出256位(32字符)的MD5编码值-输入文本有任何差异,编码结果都会不相同
[root@localhost test]# uuidgen
8253f1c2-2717-43d7-a4d8-74da0a18df6e
[root@localhost test]# echo $RANDOM | md5sum
7d53328b61fe715a0a663a2beafbe6bb -
[root@localhost test]# echo $RANDOM | md5sum
619f90bbdd811a317f5970745e93f988 -
[root@localhost test]# head -1 /dev/urandom | md5sum
a4981156ecf55515c2ac17ba44677118 -
[root@localhost test]# head -1 /dev/urandom | md5sum
489fe7e5525e94d789ed02f47293652b -
[root@localhost test]# uuidgen | tr -d '-'
2ff8eef9f0ac439192d250fb5a764a22
- 命令替换
适用场景
简化运维任务,在命令行嵌入另一个命令的输出结果–将命令的输出保存到指定变量
``反撇号
[root@localhost test]# which nginx //找到命令位置
/usr/sbin/nginx
[root@localhost test]# rpm -qf /usr/sbin/nginx //找到所属安装包
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
[root@localhost test]# rpm -qf `which nginx` //使用``命令替换操作,两步并做一步操作
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
$()表达式
[root@localhost test]# rpm -qi $(rpm -qf $(which nginx)) //查看nginx命令作用描述,方便嵌套
Name : nginx
Epoch : 1
Version : 1.14.1
Release : 9.module_el8.0.0+184+e34fea82
Architecture: x86_64
Install Date: 2021年07月07日 星期三 18时44分33秒
[root@localhost test]# ls -lh $(find /etc -size +3M) //etc下文件大小超过3m的文件
-rw-r--r--. 1 root root 8.5M 7月 8 17:35 /etc/selinux/targeted/policy/policy.31
-r--r--r-- 1 root root 9.0M 8月 6 15:22 /etc/udev/hwdb.bin