对文本处理,单独用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基础(六)--字符串和数组的更多相关文章

  1. shell变量,字符串,数组

    一.shell变量定义: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头: 中间不能有空格,可以使用下划线: 不能使用标点符号: 不能使用bash里的关键字. 变量使用: 使用一个定义过的 ...

  2. Shell基础(六):使用awk提取文本、awk处理条件、awk综合脚本应用、awk流程控制、awk扩展应用

    一.使用awk提取文本 目标: 本案例要求使用awk工具完成下列过滤任务: 1> 练习awk工具的基本用法    2> 提取本机的IP地址.根分区使用率    3> 格式化输出/et ...

  3. 【Shell基础】字符串删除

    案例:将金额18.中的点去掉,结果为18 #!/bin/shold_value=. new_value=`echo ${old_value%%.*}` echo $new_value ${filena ...

  4. 1.7 js基础,字符串、数组小结

    一.arguments  实参参数的数组         实参[实际的值],形参[形式上的参数]         当参数个数不固定的时候使用.         示例: script> var g ...

  5. 【shell脚本】字符串和数组的使用

    字符串 可以使用单引号和双引号定义字符串变量但是单引号中不支持变量解析 #! /bin/bashusername="mayuan" str_1="hello ${user ...

  6. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  7. shell切分字符串到数组

    shell切分字符串到数组 问题: 对于’aa,bb,cc,dd,ee’这样的字符串输出采用,分隔开的aa bb cc dd ee aa:bb is ok:/home/work按照":&qu ...

  8. 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)

    目录 第六章:数组 6-1 数组 6-2 数组计算 6.3 课后习题 第六章:数组 6-1 数组 题目:让用户输入一组整数以-1结束输入,算出这组数的平均值,并且输出大于平均值的数. 我们需要记录用户 ...

  9. shell基础知识之数组

    数组允许脚本利用索引将数据集合保存为独立的条目.Bash支持普通数组和关联数组,前者 使用整数作为数组索引,后者使用字符串作为数组索引.当数据以数字顺序组织的时候,应该使 用普通数组,例如一组连续的迭 ...

  10. ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)

    ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...

随机推荐

  1. java 多线程9 : synchronized锁机制 之 代码块锁

    synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间.这种情况下可以尝试使用 ...

  2. python学习笔记(21)--新建html乱码(给每本漫画生成一个html)

    说明: 1. open("index.html","w",encoding="utf-8"),open的第三个参数可以设置编码格式. 2. ...

  3. PPP点到点协议&pap验证

    RA RB

  4. [转]pageX、clientX、screenX、offsetX、layerX、x

    参考:http://www.cnblogs.com/xesam/archive/2011/12/08/2280509.html chrome: e.pageX——相对整个页面的坐标e.layerX—— ...

  5. tar -cvzf a.tar.gz a --remove-files,tar命令执行原理

    tar -cvzf  a.tar.gz a --remove-files [root@nfs01 backup]# tar -zcvf  88.tar.gz    --remove-files  /b ...

  6. r语言 技巧总结

    1.table函数返回众数,再转为dataframe as.data.frame(table(x)) 2.使用which 返回数组下标 which(rs.list=="rs1008507&q ...

  7. 利用Powershell自动部署asp.net mvc网站项目 (一)

    这一篇中我们会写一些关于自动化部署的代码.我们会使用 Powershell 书写这类代码. 你将发现这篇文章中涉及的东西非常具体,有的要求甚至相当苛刻且可能不具有通用性.这是因为部署从来都是跟环境打交 ...

  8. 何为中间语言IL?

    一直以来,对于.NET与C#之间的关系我都存在着疑惑,为此,今天专门仔细看了一下以前最容易忽略掉的书本“前言”部分,予以澄清:) 首先,c#的结构和方法论反映了.NET的基础方法论,在很多情况下,c# ...

  9. android 内存管理机制、异常、垃圾回收

    当 Android 应用程序退出时,并不清理其所占用的内存,Linux 内核进程也相应的继续存在,所谓“退出但不关闭”.从而使得用户调用程序时能够在第一时间得到响应. 当系统内存不足时,系统将激活内存 ...

  10. html测试代码框工具

    Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --& ...