shell中字符串操作【转】
转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html
我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,
当然shell编程也不例外咯,那么下面我们一起来看下shell中字符串
处理的相关操作吧。大概下面的字符串操作可以分为两种类型,一种
属于变量替换,另一种属于继承unix expr命令吧!
、测试字符串长度
${#string}
expr length $string
expr "$string" : '.*'
例:
#!/bin/bash
str="asfd"
echo "${#str}"
a=expr length $str
echo "a=$a"
a=
a=`expr "$str" : '.*'`
echo "a=$a"
、匹配字符串开头的子串长度
expr match "$string" '$substring'
$substring是一个正则表达式.
expr "$string" : '$substring'
$substring是一个正则表达式.
例:
#!/bin/bash
str=abcABC123ABCabc
echo `expr match "$str" 'abc[A-Z]*.2'` #
echo `expr "$str" : 'abc[A-Z]*.2'` #
、索引
expr index $string $substring
在字符串$string中所匹配到的$substring第一次所出现的位置.
例:
#!/bin/bash
str=abcABC123ABCabc
echo `expr index "$str" C` # C 字符的位置.
echo `expr index "$str" c` #
、提取子串
${string:position}
在$string中从位置$position开始提取子串。
如果$string是"*"或者"@", 那么将会提取从位置$position开始的位置参数. []
${string:position:length}
在$string中从位置$position开始提取$length长度的子串.
例:
#!/bin/bash
str="abcABC123ABCabc"
echo ${str:} #输出abcABC123ABCabc
echo ${str:} #输出ABC123ABCabc
echo ${str::} #输出123
、子串削除
${string#substring}
从$string的开头位置截掉最短匹配的$substring.
${string##substring}
从$string的开头位置截掉最长匹配的$substring.
例:
#!/bin/bash
str="abcABC123ABCabc"
echo ${str#a*C} #输出123ABCabc
echo ${str##a*C} #输出abc
echo ${str##a*} #输出23ABCabc
${string%substring}
从$string的结尾位置截掉最短匹配的$substring.
${string%%substring}
从$string的结尾位置截掉最长匹配的$substring.
例:
#!/bin/bash
str=abcABC123ABCabc
echo ${str%b*c} #输出 abcABC123ABCa
echo ${str%%b*c} #输出 a
、子串替换
${string/substring/replacement}
使用$replacement来替换第一个匹配的$substring.
${string//substring/replacement}
使用$replacement来替换所有匹配的$substring.
${string/%substring/replacement}
如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.
${string/#substring/replacement}
如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.
例:
#!/bin/bash
str="abcABC123ABCabc"
echo ${str/ABC/&&&} #输出 abc&&&123ABCabc
echo ${str//ABC/&&&&} #输出 abc&&&&123&&&&abc
echo ${str/%abc/&&&} #输出 abcABC123ABC&&&
echo ${str/#abc/&&&} #输出 &&&ABC123ABCabc
shell中字符串操作【转】的更多相关文章
- Shell中字符串、数值的比较
原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较: -eq 等于 ...
- shell脚本—— 字符串操作(长度,查找,替换)
表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有 ...
- Python中字符串操作
#Python字符串操作 '''1.复制字符串''' #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' pri ...
- linux shell中读写操作mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- Python中字符串操作函数string.split('str1')和string.join(ls)
Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...
- python中字符串操作--截取,查找,替换
python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...
- 在shell 中字符串,文件,数字的比较
hadoop fs -test -e /path/exist ] ;then echo 'exist' else echo 'Error! path is not exist' fi 在shell中如 ...
- Shell中字符串的切割、拼接、比较、替换
[截取] 一.Linux shell 截取字符变量的前8位,有方法如下: expr substr “$a” 1 8 : 二.按指定的字符串截取 第一种方法: ${varible##*string} # ...
- R中字符串操作
简介 Stringr中包含3个主要的函数族 字符操作 空格处理 模式匹配 常用函数 在平常的数据分析工作中,经常要用到如下的函数 函数 操作 str_length() 获取字符串长度 str_sub( ...
随机推荐
- Numpy数据类型转化astype,dtype
1. 查看数据类型 import numpy as np arr = np.array([1,2,3,4,5]) print(arr) [1 2 3 4 5] # dtype用来查看数据类型 arr. ...
- Extjs4 修改combox中store的数据
{ xtype: "combo", fieldLabel: '选择模板', name: "TemplateType", fieldName: "Tem ...
- C基础知识(1):基本数据类型
C的基本数据类型包括整型和浮点型,长度及精度信息如下: #include <stdio.h> #include <limits.h> #include <float.h& ...
- 如何在WIN7下安装虚拟机linux系统
需要支持多个平台的IT管理员经常会遇到如何在Windows 7计算机上安装Linux的问题.幸运的是有多种方法可供选择:双系统.Linux虚拟机和U盘引导. 当需要用到Windows 7和Linux时 ...
- 例子 使用sqlite3 数据库建立数据方式
#!/usr/bin/env python#coding:utf-8import sqlite3#建立一个数据库cx = sqlite3.connect("E:/test.db") ...
- C++学习笔记-namespace
指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中 关于iostream <iostream>和<iostream.h>格式不 ...
- windows vue环境搭建
windows环境搭建Vue开发环境 一.安装node.js(https://nodejs.org/en/) 下载完毕后,可以安装node,建议不要安装在系统盘(如C:). 二.设置nodejs pr ...
- p1000 A+B问题
题目描述 Description 输入两个整数A和B,输出他们的和 输入描述 Input Description 输入为一行,包含两个整数A,B.数据保证A与B都在2^31-1的范围内 输出描述 Ou ...
- Dango之模版系统
1.模板渲染 可以传列表,字典,对象等 {{ 变量 }} {% 逻辑 %} -- 标签 urls.py path('login/', views.login), views.py def login( ...
- JDK安装及JAVA环境变量配置(JDK1.8版本)
一:JDK官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html JD ...