shell笔记two
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell笔记two相关的知识,希望对你有一定的参考价值。
目录:
1.字符串的处理截取
2.数组
3.egrep和正则表达式
one.1 字符串截取
abc=nizhidaoma
echo ${abc:0:3} abc为变量,0为从第一个字符开始,3为往后数一共3位
echo ${#abc} 统计总共多少位
expr substr "$abc" 1 3 截取变量abc中从第一个开始,往后数一共3位
cut -b 1-5 /etc/passwd 1-5为截取第一个1到第五个,/etc/passwd为文件绝对路径
echo "$abc" | cut -b 1-5 如果是变量需要打印后管道给cut处理
one.2 路径截取
dirname /var/ftp/dir/a.txt 结果为/var/ftp/dir,这个命令会找出路径的目录
basename /var/ftp/dir/a.txt 结果为a.txt,这个命令会找出路径的文件
one.3 字符串替换
abc=nizhidaoma
echo ${abc/i/666} 将变量abc第一个i替换为666
echo ${abc//i/666} 将变量abc所有i替换为666
one.4 字符串掐头去
abc=nizhidaoma
echo ${abc#i} 从左向右,最短匹配删除
echo ${abc##i} 从左向右,最长匹配删除
echo ${abc%i*} 从右向左,最短匹配删除
echo ${abc%%i*} 从右向左,最短匹配删除
one.5 变量值检测
abc=nizhidaoma
echo ${abc:-xixi} 若变量abc有值则返回变量abc的值,若没有则用xixi代替,但变量abc本身值还是没有
echo ${abc:=xixi} 若变量abc没值则将xixi给abc做值
two.1 数组
abc=(ni zhi dao ma) 数组用()来表示,值之间空格隔开
echo ${abc[0]} 打印数组abc第一个值,从0开始,[0]位下标
abc[0]=haha 给数组的值变更
echo ${abc[@]} 打印数组所有值
echo ${#abc[@]} 统计数组内值的个数
echo ${abc[@]:0:3} 显示从数组第0位的值往后一共3个值
two.2 expect自动交互软件
#!/usr/bin/expect
spawn ssh [email protected] 创建交互式进程,可以使ftp登录
expect {
"yes/no" {send "yes\\r"} 捕捉到有yes/no的行会自动输入yes,\\r为回车符
"password" {send "123456\\r"} 若没有捕捉到会等待一段时间后退出脚本
}
interact 允许交互式环境
three.1 egrep
egrep -i ‘^for‘ abc.txt 查找abc.txt中for开头的行
egrep支持扩展正则,等同于grep -E
three.2 正则表达式
行首尾
未定匹配次数
限定次数
[ ]范围内单字匹配
整体及边界匹配
four.1 声明
以上内容大部分来自达内PPT的资源,这里为收集整理!
以上是关于shell笔记two的主要内容,如果未能解决你的问题,请参考以下文章