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的主要内容,如果未能解决你的问题,请参考以下文章

two pointers类型笔记整理

two.js文档阅读笔记-two.js的基本使用

LeetCode解题笔记 - 1. Two Sum

leetcode笔记--1 two-sum

Leetcode——two sum笔记

LeetCode解题笔记 - 2. Add Two Numbers