Shell脚本:几个基本的字符串处理方法总结

今天总结了下Shell脚本的几种处理字符串的方式,封装了几个基本的字符串处理函数。

代码(string.inc)如下:

#!/bin/sh

#一个测试函数
#输入:无
function str_testfunc()
{
    echo "这是一个测试函数"
}

#获取字符串长度
#输入:字符串
function str_length()
{
    echo `expr length $1`
}

#获取字符串子串
#输入:字符串 截取起始位置
#输入:字符串 截取起始位置 截取长度
function str_substring()
{
    if [ $# -eq 2 ]; then
        len=`str_length $1`
        echo `expr substr $1 $2 $len`
    elif [ $# -eq 3 ]; then
        echo `expr substr $1 $2 $3`
    else
        echo
    fi
}

#替换子串
#输入:字符串 要替换子串 用于替换的字符串
function str_replace()
{
    echo ${1//$2/$3}
}

#按给定字符截取字符串
#输入:字符串 用于划分子串的字符
function str_split()
{
    i=1
    while [ true ]; do
        temp=`echo "$1" | cut -d "$2" -f$i`
        if [ "$temp" != "" ]; then
            ((i++))
            echo $temp
        else
            break
        fi
    done
}

#删除字符串前后空格
#输入:字符串
function str_trim()
{
    echo `echo "$1"`
}

#找出给定子串在字符串中出现的位置
#输入:字符串 要搜索的子串
function str_indexof()
{
    echo `expr index $1 $2`
}

#将字符串中字符全部转换为大写
#输入:字符串
function str_toupper()
{
    echo $(echo $1 | tr ‘[a-z]‘ ‘[A-Z]‘)
}

#将字符串中字符全部转换为小写
#输入:字符串
function str_tolower()
{
    echo $(echo $1 | tr ‘[A-Z]‘ ‘[a-z]‘)
}

调用脚本(a.sh)如下:

#!/bin/sh

. ./string.inc

str_testfunc

#获取字符串长度
echo 字符串"abcdefgh"长度为:`str_length "abcdefgh"`"|END"

#获取字符串子串
echo 字符串"abcdefgh"截取子串:`str_substring "abcdefgh" 4 3`"|END"
echo 字符串"abcdefgh"截取子串:`str_substring "abcdefgh" 4`"|END"

#替换字符串
echo 把abcdebcdf中的bcd替换为f:`str_replace "abcdebcdf" "bcd" "x"`"|END"

#截取字符串
echo 截取字符串1:`str_split "a b c d e f g" " "`"|END"
echo 截取字符串2:`str_split "a:b:c:d:e:f:g" ":"`"|END"

#去掉前后空格
echo "    ab cd    "去掉前后空格:`str_trim "  ab cd  "`"|END"

echo abcdefg中bcde第一次出现的位置:`str_indexof "abcbcbd" "bcb"`"|END"

#字符串中字母大小写转换
echo "abcdefgh"转大写:`str_toupper "abcdefgh"`"|END"
echo "ABCDEFGH"转小写:`str_tolower "ABCDEFGH"`"|END"

exit 0

运行截图:

END

时间: 2024-08-05 03:01:39

Shell脚本:几个基本的字符串处理方法总结的相关文章

shell脚本实现检测回文字符串

所有回文字的结构特征如下: 如果字符数是偶数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列. 如果字符数为奇数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列,但是这两个序列中间共享一个相同的字符. sed命令能够记住之前匹配的子样式.可以用正则表达式:'\(.\)',匹配任意一个字符,\1表示其反向引用.如匹配有两个字符的回文正则表达式为: '\(.\)\(.\)\2\1' 匹配任意长度的回文脚本如下所示: #!/bin/bash

Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下 $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit 1; f

Linux中的shell脚本编程——数组 ,高级字符串操作 ,高级变量 ,配置用户环境

概述: 概述: 本章节将讲述Linux中shell脚本编程的数组,高级字符串处理,高级变量和配置用户的环境. 一.函数和位置参数扩展 1.shift 命令实现在位置参数中的跳跃,会把最左边的参数挤掉     2.匿名函数的使用 第一篇:数组 一.数组的定义: 1.变量:存储单个元素的内存空间 2.数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 3.数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开

学以致用十七----shell脚本之比较数字和字符串及if else

非常需要注意的是shell脚本对空格要求非常严格, 如: 比较字符串   (不能用于比较字符串) 以上这种写法会报错 因此比较字符串不用 单中括号 [ ] 而是用双中括号[ [ ] ] ,比较两字符串中间用等号,用eq,lt ,gt 不起作用 ,        (正确格式) 且注意中括号和字母之间要有空格,否则会报错    (错误格式) 比较数字则单双中括号都可以用,-eq -lt  -gt  > <  =没有限制,但中括号和字母之间必须要有空格 if else 也有严格的要求 有if 后者是

[转]Shell脚本中获取SELECT结果值的方法

有时候我们可能会需要在Shell脚本中执行SELECT语句,并将结果赋值给一个变量,对于这样的情形,我们可以用以下的方法来达到目的. 点击(此处)折叠或打开 #!/bin/ksh # # Created : 2015.05.25 # Updated : 2015.05.25 # Author : Jet Chenxi Zhang # Description : Get SELECT result in Shell # Variable Definitions # ORACLE_SID=audte

shell脚本处理大数据系列之(一)方法小结

转自:http://longriver.me/?p=57 方法1: 单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CPU的优势 1 2 3 4 for((i=0;i<5;i++));do     cat query_ctx.20k | awk 'NR%5=='$i'' |\      wc -l  1> output_$i 2>err_$i &  done 方法2: 另外也可以使用split的方法,

ubuntu12.04中shell脚本无法使用source的原因及解决方法

现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l `which sh` 提示/bin/sh -> dash 这说明是用dash来进行解析的. 改回方法: 命令行执行:sudo dpkg-reconfigure dash 在界面中选择no 再ls -l `which sh` 提示/bin/sh -> bash 修改成功,source可以用了~

关于shell脚本函数、数组、字符串截取、svn更新发布实例

#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm   #svn发布目录,要先推送到这个目录,然后更新提交 dir="/data/source_code/configfiles" default_conf="config.properties" default_socket_conf="socket.lp" LOG_FILE

[转]Shell脚本之无限循环的两种方法

方法一: while循环,用的比较多的 #!/bin/bash set j=2 while true do let "j=j+1" echo "----------j is $j--------------" done 方法二: for  ,看到这个用法时,看来是真真了解了for的含义 #!/bin/bash set i=0 set j=0 for((i=0;i<10;)) do let "j=j+1" echo "-------

shell脚本按行读取文件内容的方法

方法1: exec <file sum=0 while read line;do cmd done 方法2: cat ${FILE_PATH} |while read line do cmd done 方法3: while read line do cmd done<FILE