字符操作和数值运算,变量的高端用法

expr在linux中是二个效果与利益极其苍劲的授命。通过学习做贰个十分小总计。
1、计算字符串的长度。大家可以用awk中的length(s)进行总括。大家也足以用echo中的echo
${#string}实行计算,当然也足以expr中的expr length $string
求出字符串的长度。

Linux 数值运算

shell中的字符串操作

Linux shell编制程序 —- 变量的高等用法

举例

expr(对字符串和整数做些运算)

规则:

用空格隔开每个项。
用 \(反斜杠) 放在 shell 特定的字符前面。(* | & ( ) >  >=   <   <=  )
对包含空格和其他特殊字符的字符串要用引号括起来。  
整数前面可以放一个一元连字符。在内部,整数被当作 32 位,双互补数。  

SHELL字符串操作

bash Shell提供了各个字符串管理的一声令下:

awk命令 expr命令

 

  1. [root@localhost shell]# string=”hello,everyone my name is xiaoming”  
  2. [root@localhost shell]# echo ${#string}  
  3. 34  
  4. [root@localhost shell]# expr length “$string”  
  5. 34  
1,length 计算字符串的长度,

可以用awk中的length(s)进行测算。也得以用echo中的echo
${#字符操作和数值运算,变量的高端用法。string}进行测算,当然也得以expr中的expr length $string
求出字符串的长短。

[root@localhost shell]# string=”hello,everyone my name is xiaoming”
[root@localhost shell]# echo ${#string}
34
[root@localhost shell]# expr length “$string”
34
静心:当string字符串中有空格时必须用双引号把$string引起来。

字符串长度

${#..} expr length awk的length(s)
实例:
string=”hello world”
${#string}
expr length “$string”
当心:双引号是必需的,因为字符串有空格

 1 内部变量

2、expr中的expr index $string
substring索引命令功用在字符串$string上寻找substring中字符第二次出现的岗位,若找不到则expr
index再次来到0或1。

2,index 找下标

index $string
substring索引命令成效在字符串$string上搜索substring中任一字符第三回面世的职位,若找不到则expr
index重回0或1。
[root@localhost shell]# string=”hello,everyone my name is xiaoming”
[root@localhost shell]# expr index “$string” my
11
[root@localhost shell]# expr index “$string” nihao
1

相配子串

格式:expr match $string $substring
职能:在string的起来相称substring,再次来到相称到的尺寸,在string伊始相配不到substring则再次来到0,substring能够是正则表明式
string=”welcome to our world”

命令 返回值
expr match “$string” w.* 20
expr match “$string” ou.* 0

    1 内部变量是指能够对bash
shell脚本作为发生潜移暗化的变量,它们对shell及其子shell都灵验。

举例

3,match 求重回的字符长度

match $string
substring命令在string字符串中般配substring字符串,然后回来相称到的
substring字符串的尺寸,若找不到则重临0。match String1 String2 与
Expression1 : Expression2
一样,全体的格局固定到字符串的起始(也便是说,唯有以字符串的率先个字符带头的队列才被正则表明式相称)。由此^ (插入符号) 在此种情状下就不是特殊字符。
日常地,相配运算符再次回到匹配的字符个数(失利的时候回来 0)
[root@localhost shell]# string=”hello,everyone my name is xiaoming”
[root@localhost shell]# expr match “$string” my
0
[root@localhost shell]# expr match “$string” hell.*
34
[root@localhost shell]# expr match “$string” hell
4
[root@localhost shell]# expr match “$string” small
0

集体字符的目录

格式:expr index $string $sunstring
职能:在字符串string上相称substring中字符第贰次出现的字符
string=”welcome to our world”

命令 返回值
expr index “$string” our 5
expr index “$string” d 20
expr index “$string” s 0

运营开采,expr index的机能是查究五个串之间的第多个国有字符

    2 上边介绍几个常用的内部变量

  1. [root@localhost shell]# string=”hello,everyone my name is xiaoming”
      
  2. [root@localhost shell]# expr index “$string” my   
  3. 11  
  4. [root@localhost shell]# expr index “$string” nihao   
  5. 1  
4,substr 求子串

在shell中能够用{string:position}和{string:position:length}举行对string字符串中字符的抽出。第大器晚成种是从position地点上马抽出直到字符串甘休,第三种是从position地方上马收取长度为length的子串。而用expr中的expr
substr $string $position $length同样能完毕上述成效。
[root@localhost shell]# string=”hello,everyone my name is xiaoming”
[root@localhost shell]#美高梅开户网址, echo ${string:10}
yone my name is xiaoming
[root@localhost shell]# echo ${string:10:5}
yone
[root@localhost shell]# echo ${string:10:10}
yone my na
[root@localhost shell]# expr substr “$string” 10 5
ryone
在乎:echo ${string:10:5}和 expr substr “$string” 10
5的分别在于${string:10:5}以0初阶标号而expr substr “$string” 10
5以1发端标号。

截取子串

从左截取
${string:position} ${string:position:length} 从右截取
${string: -position}(冒号前面有八个空格) ${string:(position)}
${string: -position:length} ${string:(position):length}

expr substr
格式:expr substr $string $position $length
与${}的区别:${}的position从0开始给string标号;expr
sutstr的position从1开始给string标号
string=”welcome to our world”

命令 返回值
echo ${string:1:8} elcome t
expr substr “$string” 2 8 elcome t

正则表明式截取子串
运用正则表达式只好收取string开头处或结尾处的子串。

  • expr match $string ‘\($substring\)’
  • expr $string : ‘\($substring\)’
命令 返回值
expr match “$another” “[0-9]*” 8
expr match “$another” “\([0-9]*\)” 20091114
expr “$another” : “\([0-9]*\)” 20091114

注意:冒号两边有空格

          变量名                                   意义

3、expr中的expr match $string
substring命令在string字符串中相称substring字符串,然后回来相配到的substring字符串的长短,若找不到则重回0。

5、字符串截断

去除字符串和收取字符串相似${string#substring}为除去string从开端处与substring相称的最短字符子串,而${string##substring}为除去string从开首处与substring相配的最长字符子串。
举例

[root@localhost shell]# string="20091111 readnow please"
[root@localhost shell]# echo ${string#2*1}
111 readnow please
[root@localhost shell]# string="20091111 readnow please"
[root@localhost shell]# echo ${string##2*1}
readnow please

解析:第贰个为除去2和1里头最短匹配,第一个为除去2和1里面包车型地铁最长匹配。

剔除子串

${string#substring}
除去string开端处与substring相配的最短子串 ${string##substring}
剔除string开始处与substring相称的最长子串 ${string%substring}
删去string结尾处与substring相配的最短子串 ${string%%substring}
删除string结尾处与substring相称的最长子串

substring并不是正则表明式
20091114 Reading Hadoop

命令 结果
echo “${another#2*1}” 114 Reading Hadoop
echo “${another##2*1}” 4 Reading Hadoop
echo “${another%a*p}” 20091114 Reading H
echo “${another%%a*p}” 20091114 Re

          BASH                  BASH记录了bash
shell的门路,经常为/bin/bash,大家得以选取echo $BASH查看

举例

6、替换子串

${string/substring/replacement}表示仅替换三回substring匹配字符,而${string//substring/replacement}表示为轮换全体的substring相配的子串。
举例

[root@localhost shell]# string="you and you with me"  
[root@localhost shell]# echo ${string/you/me}  
me and you with me
[root@localhost shell]# string="you and you with me"
[root@localhost shell]# echo ${string//you/me}
me and me with me

轮换子串

${string/substring/replacement}
仅替换第贰回与substring相相配的子串 ${string//substring/replacement}
轮换全数与substring相相称的子串 ${string/#substring/replacement}
轮换string早先处与substring相相称的子串
${string/%substring/replacement}
轮换string结尾处与substring相相配的子串

string=”20001020year20050509month”

命令 结果
echo ${string/200/201} 20101020year20050509month
echo ${string/200/201} 20101020year20150509month
echo ${string/r*h/} 20001020yea
echo ${string/#2000/2010} 20101020year20050509month
echo ${string/%month/MONTH} 20001020year20050509MONTH

 

SHELL字符串操作 bash
Shell提供了四种字符串管理的指令: awk命令 expr命令 字符串长度 ${#..}
expr length awk的length(s) 实例:…

          HOSTNAME       HOSTNAME记录了主机名

  1. [root@localhost shell]# string=”hello,everyone my name is xiaoming”
      
  2. [root@localhost shell]# expr match “$string” my   
  3. 0  
  4. [root@localhost shell]# expr match “$string” hell.*   
  5. 34  
  6. [root@localhost shell]# expr match “$string” hell   
  7. 4  
  8. [root@localhost shell]# expr match “$string” small   
  9. 0  

let命令

          HOSTTYPE        HOSTTYPE记录系统的硬件架构

4、在shell中能够用{string:position}和{string:position:length}举行对string字符串中字符的收取。第风华正茂种是从position地点上马收取直到字符串截至,第三种是从position地方上马抽出长度为length的子串。而用expr中的expr
substr $string $position $length同样能兑现上述效率。

1,shell中的整数值总计

$ i=0;
$ let i++
$ ((i++))
$ expr $i + 1
$ echo $i 1 | awk ‘{printf $1+$2}’

let i++;
i=$(expr $i + 1)
i=$(echo $i+1|bc)
i=$(echo “$i 1” | awk ‘{printf $1+$2;}’)

          MACHTYPE       MACHTYPE也是记录系统的硬件框架结构

举例

2.let,expr,bc

都足以用来求模,运算符都以%,而let和bc能够用来求幂,运算符分化,前面一个是**,后者是^
//求模
$ expr 5 % 2
1
$ let i=5%2
$ echo $i
1
$ echo 5 % 2 | bc
1
$ ((i=5%2))
$ echo $i
1

//求幂
$ let i=52
$ echo $i
25
$ ((i=5
2))
$ echo $i
25
$ echo “5^2” | bc
25

3,浮点预算,let和expr都无法儿张开浮点运算,不过bc和awk能够。

          OSTYPE            OSTYPE记录的是操作系统的档案的次序

  1. root@localhost shell]# string=”hello,everyone my name is xiaoming”
      
  2. [root@localhost shell]# echo ${string:10}
      
  3. yone my name is xiaoming  
  4. [root@localhost shell]# echo ${string:10:5}
      
  5. yone  
  6. [root@localhost shell]# echo ${string:10:10}   
  7. yone my na  
  8. [root@localhost shell]# expr substr “$string” 10 5   
  9. ryone  

bc命令

           

小心:echo ${string:10:5}和 expr substr “$string” 10
5的区分在于${string:10:5}以0起先标号而expr substr “$string” 10
5以1早先标号。

1,交互式
bc -l 进入bc
scale=10 将小数位定为10位
e(1) 计算e的小数点后10位
quit 退出bc

 2 字符串管理

5、删除字符串和收取字符串相似${string#substring}为除去string起首处与substring相配的最短字符子串,而${string##substring}为除去string早前处与substring相称的最长字符子串。

2,浮点数总结
echo "scale=10;0.46492572708365077*16205" | bc
echo "obase=2;123"|bc#转换成2进制

    1 下边大家要介绍expr命令,首要用以管理字符串的

举例

3,用百分数的款型出口

printf “result: %.2f%%\n”
echo "scale=3;(6/17)*100"|bc//前面叁个%意味着百分数的来得位数,前面多少个%打字与印刷成一个%,scale=3是计算到小数点前边四个人

shell浮点数比较:
shell脚本中浮点数的可比,日常常有两种艺术,使用bc和awk的措施,下边分别举例介绍:

一,bc
if [ echo "0.5 > 0.3" | bc -eq 1 ]; then echo “ok”; else echo “not
ok”; fi;

二,awk
x=3.1; y=3.2; echo “$x $y” | awk ‘{if ($1 > $2) print $1; else print
$2}’

shell比较:
大背头比较

-eq 等于,如:if [ “$a” -eq “$b” ]
-ne 不等于,如:if [ “$a” -ne “$b” ]
-gt 大于,如:if [ “$a” -gt “$b” ]
-ge 大于等于,如:if [ “$a” -ge “$b” ]
-lt 小于,如:if [ “$a” -lt “$b” ]
-le 小于等于,如:if [ “$a” -le “$b” ]
< 小于(供给双括号),如:((“$a” < “$b”))
<= 小于等于(供给双括号),如:((“$a” <= “$b”))

   大于(需要双括号),如:(("$a" > "$b"))   

= 大于等于(需求双括号),如:((“$a” >= “$b”))

字符串比较
= 等于,如:if [ “$a” = “$b” ]
== 等于,如:if [ “$a” == “$b” ],与=等价
!= 不等于,如:if [ “$a” != “$b” ]
< 小于,在ASCII字母顺序下.如:

   大于,在ASCII字母顺序下.如:    

-z 字符串为”null”.正是长度为0.
-n 字符串不为”null”

 

  1. [root@localhost shell]# string=”20091111 readnow please”   
  2. [root@localhost shell]# echo ${string#2*1}   
  3. 111 readnow please  
  4. [root@localhost shell]# string=”20091111 readnow please”   
  5. [root@localhost shell]# echo ${string##2*1}   
  6. readnow please  

    2 计算字符串string的长度

解析:第二个为除去2和1以内最短相称,第三个为除去2和1时期的最长相称。

       ${#string} 或 expr length $string

6、替换子串${string/substring/replacement}表示仅替换二次substring相称字符,而${string//substring//replacement}表示为轮换全体的substring相称的子串。

 

举例

    3 expr的目录命令

  1. [root@localhost shell]# string=”you and you with me”   
  2. [root@localhost shell]# echo ${string/you/me}   
  3. me and you with me  
  4. [root@localhost shell]# string=”you and you with me”   
  5. [root@localhost shell]# echo ${string//you/me}   
  6. me and me with me  

       expr index $string $substring //
功效是在string上相配substring第三次面世的职分,如果没有重临0

美高梅开户网址 1

 

    4 expr match命令

       expr match $string $substring //
作用是在string的初叶相称substring子串,重临相称到的尺寸,若在这早先相称不到则重临0,substring能够是字符串也可以是正则表明式

 

    5 抽取string的子串

       #{string:position} //从position个任务上马收取子串到告竣

       #{string:position:length}
//从position处开头抽出长度为length的子串

 

    6 删除子串

       ${string:subdtring} //删除string初叶处与substring相配的最短子串

       ${string:##substring}
//删除string开端处与substring相称的最长子串

 

    7 替换子串

       ${string/substring/resplacement}
//仅替换第三遍与substring相匹配的子串

       ${string//substring/resplacement} //替换全部与substring相相配的子

 

shell编制程序 —- 变量的高端用法 1 中间变量 1
内部变量是指能够对bash
shell脚本作为时有发生潜濡默化的变量,它们对shell及其子shell都灵验。 2
下边…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图