您的位置:首页 > 运维架构 > Shell

Shell笔记1-字符串处理

2020-07-26 09:16 711 查看

字符串处理

  1. 计算字符串长度

    ${#string}

    例:

    ~$ echo $var6
    /usr/local/sBIN:/usr/local/BIN:/usr/sBIN:/usr/BIN:/sBIN:/BIN:/usr/games:/usr/local/games:/snap/BIN
    ~$ echo ${#var6}
    98

    expr length “$string”

    例:

    ~$ expr length "$var6"
    98
  2. 获取字符索引位置

    expr index “$string” substr

    例:

    ~$ expr index "$var1" start
    7

    :获取时将查找的字符串切割成字符来找

    例:

    ~$ expr index "$var1" uniq
    2
  3. 获取子串长度

    expr match “$string” substr

    ~$ expr match "$var1" Quick
    5

    :从头开始匹配,如果取其中一节是匹配不到的

    ~$ expr match "$var1" app
    0
    ~$ expr match "$var1" is
    0
  4. 抽取字符串中的子串

    ${string:position}

    例:

    ~$ var1="mysql nginx tomcat go java php"
    ~$ echo ${var1:10}
    x tomcat go java php

    ${string:position:length}

    例:

    ~$ echo ${var1:10:5}
    x tom

    ${string: -position}

    例:

    ~$ echo ${var1: -10}
    o java php
    ~$ echo ${var1: (-10)}
    o java php
    ~$ echo ${var1: -10:5}
    o jav

    expr substr $string $position $length

    例:

    ~$ expr substr "$var1" 10 5
    nx to

    :使用${…时索引是从0开始计数的,expr是从1开始计数的

    ~$ echo ${var1:10:5}
    x tom~$ expr substr "$var1" 10 5
    nx to

练习

需求描述:

变量string=“Bigdata process framework is Hadoop , Hadoop is an open source project” 执行脚本后,打印输出string字符串变量,并给出用户以下选项:

(1)、打印string长度

(2)、删除字符串中所有的Hadoop

(3)、 替换第一个Hadoop为Mapreduce

(4)、替换全部Hadoop为Mapreduce

用户输入数字1|2|314, 可以执行对应项的功能;输入q|Q则退出交互模式.

思路分析:

1.将不同功能模块划分,并编写函数

​ function print_tips

​ function len_of_string

​ function del_hadoop

​ function rep_hadoop_mapreduce_first

​ function rep_hadoop_mapreduce_all

2.实现第一步所定义的功能函数

function print_tips
{
echo "**********************************"
echo "(1)、打印string长度"
echo "(2)、删除字符串中所有的Hadoop"
echo "(3)、 替换第一个Hadoop为Mapreduce"
echo "(4)、替换全部Hadoop为Mapreduce"
echo "**********************************"

}

function len_of_string
{
echo "${#string}"
}

function del_hadoop
{
echo "${string//Hadoop/}"
}

function rep_hadoop_mapreduce_first
{
echo "${string/Hadoop/Mapreduce}"
}
function rep_hadoop_mapreduce_all
{
echo "${string//Hadoop/Mapreduce}"
}

3.程序主流程的设计

print_tips
echo "string=$string"
#判断输入主程序
while true
do
echo
read -p "Pls input your choice(1|2|3|4|q|Q):" choice

case $choice in
1)
len_of_string
;;
2)
del_hadoop
;;
3)
rep_hadoop_mapreduce_first
;;
4)
rep_hadoop_mapreduce_all
;;
q|Q)
exit
;;
*)
echo "Error,input only in {1|2|3|4|q|Q}"
;;
esac
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: