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,成功方法,失败方法,完成方法.除了这些以外还 ...
随机推荐
- jq 跳转方式汇总
按钮式: <INPUT name="pclog" type="button" value="GO" onClick="loc ...
- C#中实现Windows系统流氓监控程序
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- SharePoint自动化系列——通过PowerShell创建SharePoint Lists
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...
- BAT-SVN自动更新代码目录
1.安装“TortoiseSVN-1.7.15.25753-x64-svn-1.7.18.msi”. 2.“运行”->“cmd”->输入“svn help”->出现用说明代表正常,提 ...
- iOS边练边学--UINavigationController导航条的使用
一.使用UINavigationController的步骤以及代码 // 程序加载完成后执行的代码 - (BOOL)application:(UIApplication *)application d ...
- iOS边练边学--图片的拉伸
图片拉伸方法一: IOS 5.0以后才有的方法: - (void)viewDidLoad { [super viewDidLoad]; UIImageView *imageView = [[UIIma ...
- javascript-限制文本框只输入数字
使用onInput()事件 oninput 是 HTML5 的标准事件,对于检测 textarea, input:text, input:password 和 input:search 这几个元素通过 ...
- RRD.so文件 rrdruby
ubuntu 12.04绑定rrdruby gem install librrd 用来装rrdruby,这样才能找到RRD.so文件然后在rb文件中加入这两句话: $: << '/path ...
- arduino~snprintf
#include <stdio.h> printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf ...
- 支付宝前端开源框架Alice(解决各个浏览器的样式不一致的问题)
/**************** 网址:https://github.com/sofish/Alice /****************** @charset "utf-8& ...