• 0.字符串的小知识点
  • 1.字符串的截取
    • 1.1从指定位置开始截取
    • 1.2 从指定字符(子字符串)开始截取
    • 1.3字符串截取的总结
    • 1.4 按指定要求截取
  • 2.字符串的拼接
  • 3.字符串的替换

0.字符串的小知识点

字符串可以由单引号' '包围,也可以由双引号" "包围,也可以不用引号,它们之间是有区别的:
1) 由单引号' '包围的字符串:

  • 任何字符都会原样输出,在其中使用变量是无效的。
  • 字符串中不能出现单引号即使对单引号进行转义也不行

2) 由双引号" "包围的字符串:

  • 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
  • 字符串中可以出现双引号只要它被转义了就行

3) 不被引号包围的字符串

  • 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" "包围的字符串一样。
  • 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。

获取字符串长度可以用${#string_name}

1.字符串的截取

1.1从指定位置开始截取

原理

原始字符串

var=http://www.aaa.com/123.html

结果

左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示,起始数字是1

${string: start :length}

start :length指定起始位置和长度,长度省略的话表示直到字符串的末尾

echo ${var:0:5}

http:

echo ${var:7}

www.aaa.com/123.html

echo ${var:0-7:3}

23.

echo ${var:0-7}

23.html

1.2 从指定字符(子字符串)开始截取

原理

原始字符串

var=http://www.aaa.com/123.html

结果

#、## 表示从左边开始删除。

一个 # 表示从左边删除到第一个指定的字符;

两个 # 表示从左边删除到最后一个指定的字符。

echo ${var#*/} /www.aaa.com/123.html
echo ${var##*/} 123.html

%、%% 表示从右边开始删除。

一个 % 表示从右边删除到第一个指定的字符;

两个 % 表示从左边删除到最后一个指定的字符。

删除包括了指定的字符本身。

echo ${var%/*} http://www.aaa.com
echo ${var%%/*} http:

*是通配符的一种,表示任意长度的字符串

如果不需要忽略指定字符左边/右边的字符,那么也可以不写*

*表示零个或多个任意字符,?表示仅与一个任意字符匹配,[…]表示匹配中括号里面的字符,[!..]表示不匹配中括号里面的字符。

echo ${var#http:/}

echo ${var%/123.html}

/www.aaa.com/123.html

http://www.aaa.com

1.3字符串截取的总结

格式 说明 举栗
${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。

var=/home/wwwroot/

echo $var #result is /home/wwwroot/

echo ${var:5} #result is /wwwroot/

echo ${var: -5} #result is root/

echo ${var:(-5)} #result is root/

echo ${var:0-5} #result is root/

echo ${var:1-5} #result is oot/

${string: 0-start}

从 string 字符串的右边第 start 个字符开始截取,直到最后。

从右边开始提取字串,但必须使用在冒号后面加空格一个数字整个num加上括号,如${var: −2}、${var:0-2}或${var:(-2)}。

${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。

var="http://www.runoob.com/linux/linux-shell-variable.html"

s1=${var%%t*}   结果:h

s2=${var%t*}     结果:http://www.runoob.com/linux/linux-shell-variable.h

s3=${var%%.*}   结果:http://www

s4=${var#*/}      结果:/www.runoob.com/linux/linux-shell-variable.html

s5=${var##*/}    结果:linux-shell-variable.html

${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string#*chars} 删除从开始到第一次出现chars(包含)的所有字符
${string##*chars} 删除从开始到最后一次chars(包含)的所有字符
${string%chars*} 从右边删除到第一次出现chars(包含)的所有字符
${string%%chars*} 从右边删除到最后一次出现chars(包含)的所有字符

1.4 使用cut截取字符串

参考:cut用法

ls -al | cut -d "." -f2  获取后缀名

echo $test|cut -c1-8

2.字符串的拼接

  脚本 结果 注意点
拼接字符

$value1=home

$value2=${value1}"="

echo $value2

home=

1.在 Shell 中不需要使用任何连接符,将两个字符串并排放在一起就能实现拼接

2.变量名要加{},避免变量名与其他字符向混淆

拼接字符串

var0=test

var1=43

echo ${var0}${var1}

test43

3.字符串的替换

语法:${变量/查找/替换值} 一个'/'表示替换第一个,'//'表示替换所有,当查找中出现了特殊字符"/",需要转移成"\/"。

test='c:/windows/boot.ini'
脚本
结果
替换第一个/

echo ${test/\//\\}

c:\windows/boot.ini

替换所有/

echo ${test//\//\\}

c:\windows\boot.ini

2shell中处理字符串,字符串的截取、替换的更多相关文章

  1. String字符串操作--切割,截取,替换,查找,比较,去空格.....

    字符串拼接 直接用+号:String a = "I"; String b = "love"; String c = "you";String ...

  2. Python 字符串操作(截取/替换/查找/分割)

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '1234567 ...

  3. oracle操作字符串:拼接、替换、截取、查找

    1.拼接字符串 1)可以使用“||”来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select concat('拼接', '字 ...

  4. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

  5. oracle操作字符串:拼接、替换、截取、查找、长度、判断

    1.拼接字符串 1)可以使用“||”来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select concat('拼接', '字 ...

  6. mysql 字符串 拼接 截取 替换

    一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:) as abstract ...

  7. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  8. 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    转自: http://www.cnblogs.com/huangcong/archive/2011/08/29/2158268.html 黄聪:Python 字符串操作(string替换.删除.截取. ...

  9. vim /vi中对字符串的查找并替换

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

随机推荐

  1. 大数据学习之路——MySQL基础(一)——MySQL的基础知识与常见操作

    一.存储引擎 1.含义 存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引 ...

  2. 如何设计 API 接口,实现统一格式返回?

    文章目录: 目录 前后端接口交互 接口返回值约定 返回值规范 正确返回 错误返回 统一定义错误码 错误码规范 Controller 层如何用? 正确返回 错误返回 详细代码实现 错误码 Control ...

  3. Linux(CentOS7)下配置多个tomcat

    记录 Linux(CentOS7) 下配置多个 tomcat 的操作过程. 一.下载tomcat 前提:安装配置好jdk环境,未配置可参考Linux(CentOS7)下安装jdk1.8. 从 tomc ...

  4. Linux-SSH介绍与认证方式

    Linux SSH 前言: 在实际的生产环境中,运维人员经常要使用本地的计算机对远程主机进行控制工作,TCP/IP协议提供了两种协议来完成这样的操作,分别为Telnet协议和SSH协议. 由于Teln ...

  5. Go语言流程控制05--defer延时执行

    package main import "fmt" func xingzuoZhensuo() { var birthday string fmt.Println("请输 ...

  6. OneFlow 概念清单

    OneFlow 概念清单 本文将对 OneFlow 中涉及到的,常用的一些概念/名词做一个概括性的解释.主要内容针对算法工程师和框架开发者分为以下两部分: 算法开发 框架开发 在算法开发部分,将解释深 ...

  7. SLAM的通用框架:GSLAM

    SLAM的通用框架:GSLAM GSLAM: A General SLAM Framework and Benchmark 论文链接: http://openaccess.thecvf.com/con ...

  8. 重新整理 mysql 基础篇————— 介绍mysql[一]

    前言 准备整理mysql的基础篇了,前面整理了sql语句序列的的<sql 语句系列(八百章)>,感觉很多用不上,就停下来了,后续还是会继续整理. mysql 基础篇主要是对一些基础进行整理 ...

  9. 算法训练 区间k大数查询(题解)

    资源限制 时间限制:1.0s   内存限制:256.0MB   问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个.   输入格式 第一行包含一个数n,表示序列长度. 第二行包 ...

  10. JavaScript 中精度问题以及解决方案

    JavaScript 中的数字按照 IEEE 754 的标准,使用 64 位双精度浮点型来表示.其中符号位 S,指数位 E,尾数位M分别占了 1,11,52 位,并且在 ES5 规范 中指出了指数位E ...