shell基础(六)--字符串和数组
对文本处理,单独用shell来处理还是比较薄弱。所以shell就引用了awk and sed这两个命令。我们今天不说这个
一 字符串
字符串是shell编程中最常用最有用的数据类型,因为你定义一个变量,存的值就是一个字符串,字符串可以用单引号,也可以用双引号,也可以不用引号
A=1
name="lottu"
feel='happy'
说下字符串的处理
1. 拼接字符串
echo "${name} feels ${feel}" #即空格就是字符串拼接
2. 求字符串长度
echo ${#name}
echo `expr length $name`
echo ${name} | awk '{print length($0)}' #awk里面拥有丰富的函数,所以可以完全借鉴于它。
3.截取字符串
echo ${name:1:4} #输出ottu。下标是从0开始;这跟其他语言不一样。
expr substr "$name" 1 4
echo ${name}|awk '{print substr($0,2,4)}' #输出为ottu。
4. index检索子串--返回第一次出现的位置;若找不到,则返回1
expr index "$name" lo
5. match匹配子串 --返回匹配到子串的长度;若找不到,则返回0
expr match "$name" lott #返回4
6. 替换子串${string/substring/replacement}表示仅替换一次substring相配字符,而${string//substring/replacement}表示为替换所有的substring相配的子串
str="you and me,go your home.OK? you"
echo ${str/you/tom}
echo ${str//you/tom}
总结:灵活运用命令expr,以上实现效果都可以用awk来实现。本人对awk很熟悉;大家有什么文本处理的问题,可以找我。
二 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0
1. 定义数组
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
array_name=(value1 ... valuen)
vname=("lottu" "li0924" "0924" "tom") 2. 打印数组值
echo ${vname[2]} #输出"0924" ;大家理解?因为shell数组的下标是从0开始。
使用使用@ 或 * 可以获取数组中的所有元素
echo ${vname[@]} or echo ${vname[*]} 3.获取数组长度
其实跟字符串长度差不多
echo ${#vname[*]} #输出为4;数组的个数
求数组某个下标的值的长度
echo ${#vname[1]} #输出为6 4. 删除数组
unset命令
unset varray_name[n] :删除第n+1个
unset varray_name 删除数组 varray_name 5. 获取部分数组--格式:${数组名[@或*]:起始位置:长度}
$ vname=("lottu" "li0924" "0924" "tom")
$ echo ${vname[*]:0:2}
lottu li0924 6. 扩展read 命令来定义数组使用参数a
$ read -p "please input your number: " -a num
please input your number: 1 5 6 8
$ echo ${num[*]}
1 5 6 8
shell基础(六)--字符串和数组的更多相关文章
- shell变量,字符串,数组
一.shell变量定义: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头: 中间不能有空格,可以使用下划线: 不能使用标点符号: 不能使用bash里的关键字. 变量使用: 使用一个定义过的 ...
- Shell基础(六):使用awk提取文本、awk处理条件、awk综合脚本应用、awk流程控制、awk扩展应用
一.使用awk提取文本 目标: 本案例要求使用awk工具完成下列过滤任务: 1> 练习awk工具的基本用法 2> 提取本机的IP地址.根分区使用率 3> 格式化输出/et ...
- 【Shell基础】字符串删除
案例:将金额18.中的点去掉,结果为18 #!/bin/shold_value=. new_value=`echo ${old_value%%.*}` echo $new_value ${filena ...
- 1.7 js基础,字符串、数组小结
一.arguments 实参参数的数组 实参[实际的值],形参[形式上的参数] 当参数个数不固定的时候使用. 示例: script> var g ...
- 【shell脚本】字符串和数组的使用
字符串 可以使用单引号和双引号定义字符串变量但是单引号中不支持变量解析 #! /bin/bashusername="mayuan" str_1="hello ${user ...
- shell基础(转)
shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...
- shell切分字符串到数组
shell切分字符串到数组 问题: 对于’aa,bb,cc,dd,ee’这样的字符串输出采用,分隔开的aa bb cc dd ee aa:bb is ok:/home/work按照":&qu ...
- 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)
目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...
- shell基础知识之数组
数组允许脚本利用索引将数据集合保存为独立的条目.Bash支持普通数组和关联数组,前者 使用整数作为数组索引,后者使用字符串作为数组索引.当数据以数字顺序组织的时候,应该使 用普通数组,例如一组连续的迭 ...
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...
随机推荐
- js实现类似新闻条目人物简介不间断的滚动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- php写杨辉三角算法
<?phpfunction YangHui($iLine) { for ($i = 0;$i <= $iLine;$i++)//行 { for ($j ...
- c++多继承浅析
图一 图二 ...
- # rp2833板卡更新u-boot.bin的步骤
1 建立tftpserver,并验证tftpserver的正确性(切记),并将PC主机网址设置192.168.18.105: 2 将u-boot-am.bincopy到tftpserver的目录下,并 ...
- uboot中MAC网络(待续)
start ->start_armboot ->main_loop 实际应用中问题:为什么从nandflash读出的MAC(写到物理phy上)与上层网口地址不同(上层网口采用env的mac ...
- hdu2222 KeyWords Search AC自动机入门题
/** 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意:题意:给定N(N <= 10000)个长度不大于50的模式串,再给定一个长度为L ...
- UVA 11468 AC自动机入门题 记忆化概率dp+ac自动机
/** 链接:https://vjudge.net/problem/UVA-11468 详见lrj训练指南P218 我的是反向求存在模板串的概率. dp[i][j]表示当前i位置选择字符,前面i-1个 ...
- 【3C认证】安防产品3C认证
安防产品3C认证作为3C认证的一部分.安防产品即:防范的手段达到或实现安全的目的的设备或器材. 依据<中华人民共和国产品质量法>.<中华人民共和国标准化法>.<中华人民共 ...
- thinkphp openfire 添加用户 骨架
public function addadd(){ header("Content-Type:text/html; charset=utf-8"); $user=$_POST['n ...
- e553. 作为浏览器访问URL
// See also e551 精简的Applet try { URL url = new URL(getDocumentBase(), "http://hostname.com/page ...