shell学习(二)

字符串处理

  • 截取字符串
    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 78 17:35 /etc/selinux/targeted/policy/policy.31
-r--r--r--  1 root root 9.0M 86 15:22 /etc/udev/hwdb.bin


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值