shell 字符串的存储 详解
get the length of me
// awk的“数组”功能何止于此呢,看看它的for引用吧,注意,这个和bash里头的for不太一样,i不是元素本身,而是下标
stringZ=abcABC123ABCabc
例子:利用数组存放"get the length of me"的用空格分开的各个部分。
echo `expr "$stringZ" : 'abc[A-Z]*.2'` # 8
复制代码 代码示例:
不同,比如windows下为\r\n)。而空格或者TAB键经常用来分割数据库的各个字段,这似乎也是司空见惯的事情。 5 getget the length of me
$substring是一个正则表达式. 6
expr "$string" : '$substring'
c0129a80
$ echo ${#var_arr[@]} #记得上面求某个字符串的长度么,#操作符,如果想求某个数组元素的字符串长度,那么就把@换成下标吧
1 2 3 4 5
同样是用到分割符,但为了更方便的操作分割以后的字符串的各个部分,我们抽象了“数组”这么一个数据结构,从而让我们更加方便地通过下标来获取某个指定的部分。
$ echo ${var_arr[5]}
// bash里头实际上还提供了一种类似于“数组”的功能,即"for i in 用指定分割符分开的字符串" 的用法
$ echo ${var_arr[5]}
//1. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下标一样
// 即,你可以很方便的获取某个字符串的某个部分
而在shell编程中,有很多可用的工具,诸如expr,awk都提供了类似的方法来实现子串的查询动作。
5 | get the length of me | get the length of me
$substring是一个正则表达式.
$ echo $var | awk '{printf("%d | %s %s %s %s %s | %s\n", NF, $1, $2, $3, $4, $5, $0);}'
get the length of me
复制代码 代码示例:
不关心字符串在内存中的实际存储结构,仅仅关系它呈现出来的逻辑结构。
$ echo ${var_arr[@]} #这个就是整个字符串所有部分啦,这里可以用*代替@,下同// 实际上,上面的操作很类似awk自身的行处理功能:awk默认把一行按照空格分割为多个域,并可以通过$1,$2,$3...来获取,$0表示整行
1,通过字符在串中的位置来呈现它
$ echo $var | awk '{split($0, var_arr, " "); for(i in var_arr) printf("%s ",var_arr);}'
2,根据某个分割符来取得字符串的各个部分
sys_read字符串是一连串的字符而已,为了操作方便,往往可以让字符串呈现出一定的结构。
$ var="get the length of me"正是因为这样,所以产生了大量优秀的行编辑工具,诸如grep,awk,sed等。在“行内”(姑且这么说吧,就是处理单行,即字符串里头不再包含行分割符)的字符串分割方面,cut和awk提供了
这里最常见的就是行分割符、空格或者TAB分割符了,前者用来当行号,我们似乎已经司空见惯了,因为我们的编辑器就这样“莫名”地处理着行分割符(在unix下为\n,在其他系统下有一些
new_element
非常优越的“行内”(处理单行)处理能力。
匹配字符串开头的子串长度
c0177310
// 另外,awk还支持删除某个数组元素,不用时可以用delete函数删除掉。awk还支持二维数组。
//2. awk里头的数组,注意比较它和bash提供的数组的异同
$ awk '{if(FILENAME ~ "System.map") map[$3]=$1; else {printf("%s\n", map[$1])}}' /boot/System.map-2.6.20-16-generic symbol
$ echo ${var_arr[0]} ${var_arr[1]} ${var_arr[2]} ${var_arr[3]} ${var_arr[4]}
// 比如,实现一个非凡的应用,把某个文件中的某个系统调用名替换成地址。
3,处理用分割符分割好的各个部分
$ ls /boot/System.map*两者都几乎支持模式匹配(match)和完全匹配(index)。 sys_close
// awk还有更“厉害”的处理能力,它的下标可以不是数字,而可以是字符串,从而变成了“关联”数组
expr match "$string" '$substring'
通过指定位置来找到某个子串。这在c语言里头通常可以利用指针来做。
bash提供了这么一种数据结构,而优秀的awk也同样提供了它。
$ echo $var | awk '{split($0, var_arr, " "); for(i in var_arr) printf("%s ",i);}'
$ var_arr[5]="new_element"
c0175d80
$ cat symbol
$ echo $var | awk '{printf("%d %s\n", split($0, var_arr, " "), var_arr[1]);}'
get the length of me
5
echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8
比如,这样一个字符串:"get the length of me",我们可以从不同的方面来呈现它。
$ for i in $var; do echo -n $i" "; done;本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/shell/5749.shtml
相关文章
热门TAG
命令 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 技巧 权重 服务器 网站流量 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows 蜘蛛 搜索引擎 网站收录 JSP 实例解析最新文章
-
PHP生成奖状
时间:2021-01-06
-
python实现输入五个数并求
时间:2021-01-06
-
php检测网站是否正常打开
时间:2021-01-05
-
python怎么右对齐
时间:2021-01-05
-
Python3爬虫入门之Python3的安
时间:2021-01-05
-
如何用PHP接收http请求头信
时间:2021-01-05
-
数据库怎么连接用php写的
时间:2021-01-05
-
php后缀怎么打开
时间:2021-01-05
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
php文档怎么打开
时间:2020-12-29
-
php检测网站是否正常打开
时间:2021-01-05
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
python实现输入五个数并求平均值
时间:2021-01-06
-
浅谈Linux Shell的管道与重定向
时间:2020-12-23
-
如何检测Django是否安装成功
时间:2020-12-29
