Shell

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Shell >

shell 字符串的存储 详解

来源:网络整理  作者:  发布时间:2020-12-19 20:35
本文介绍下,在shell中存储字符串的一些方法,有需要的朋友作个参考。...
#       |------|

$ var_arr=($var)    #这里把字符串var存放到字符串数组var_arr中了,默认以空格作为分割符
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 get
get 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]}

// 这里的NF是该行的域的总数,类似于上面数组的长度,它同样提供了一种通过“下标”访问某个字符串的功能

//1. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下标一样
// 即,你可以很方便的获取某个字符串的某个部分
而在shell编程中,有很多可用的工具,诸如expr,awk都提供了类似的方法来实现子串的查询动作。
5 | get the length of me | get the length of me
$substring是一个正则表达式.

sys_exit
$ 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也同样提供了它。

// split把一行按照空格分割,存放到数组var_arr中,并返回数组的长度。注意:这里的第一个元素下标不是0,而是1
$ 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;
 

相关热词: 详解 shell

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/shell/5749.shtml

最新文章
PHP生成奖状 PHP生成奖状

时间:2021-01-06

python实现输入五个数并求 python实现输入五个数并求

时间:2021-01-06

php检测网站是否正常打开 php检测网站是否正常打开

时间:2021-01-05

python怎么右对齐 python怎么右对齐

时间:2021-01-05

Python3爬虫入门之Python3的安 Python3爬虫入门之Python3的安

时间:2021-01-05

如何用PHP接收http请求头信 如何用PHP接收http请求头信

时间:2021-01-05

数据库怎么连接用php写的 数据库怎么连接用php写的

时间:2021-01-05

php后缀怎么打开 php后缀怎么打开

时间:2021-01-05

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

shell 字符串的存储 详解

2020-12-19 编辑:

#       |------|

$ var_arr=($var)    #这里把字符串var存放到字符串数组var_arr中了,默认以空格作为分割符
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 get
get 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]}

// 这里的NF是该行的域的总数,类似于上面数组的长度,它同样提供了一种通过“下标”访问某个字符串的功能

//1. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下标一样
// 即,你可以很方便的获取某个字符串的某个部分
而在shell编程中,有很多可用的工具,诸如expr,awk都提供了类似的方法来实现子串的查询动作。
5 | get the length of me | get the length of me
$substring是一个正则表达式.

sys_exit
$ 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也同样提供了它。

// split把一行按照空格分割,存放到数组var_arr中,并返回数组的长度。注意:这里的第一个元素下标不是0,而是1
$ 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

相关文章

风云图片

推荐阅读

返回Shell频道首页