iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >linux shell 字符串操作(长度,查找,替换)详解
  • 348
分享到

linux shell 字符串操作(长度,查找,替换)详解

字符串详解长度 2022-06-04 21:06:47 348人浏览 独家记忆
摘要

在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外

在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。

一、判断读取字符串值

表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${var=DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:=DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${var+OTHER} 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 ${var:+OTHER} 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 ${var?ERR_MSG} 如果var没被声明, 那么就打印$ERR_MSG * ${var:?ERR_MSG} 如果var没被设置, 那么就打印$ERR_MSG * ${!varprefix*} 匹配之前所有以varprefix开头进行声明的变量 ${!varprefix@} 匹配之前所有以varprefix开头进行声明的变量

加入了“*” 不是意思是: 当然, 如果变量var已经被设置的话, 那么其值就是$var.


[chengmo@localhost ~]$ echo ${abc-'ok'}
ok
[chengmo@localhost ~]$ echo $abc

[chengmo@localhost ~]$ echo ${abc='ok'}
ok
[chengmo@localhost ~]$ echo $abc
ok

如果abc 没有声明“=" 还会给abc赋值。

[chengmo@localhost ~]$ var1=11;var2=12;var3=
[chengmo@localhost ~]$ echo ${!v@}   
var1 var2 var3
[chengmo@localhost ~]$ echo ${!v*}
var1 var2 var3 

${!varprefix*}与${!varprefix@}相似,可以通过变量名前缀字符,搜索已经定义的变量,无论是否为空值。

二、字符串操作(长度,读取,替换)

表达式 含义 ${#string} $string的长度 ${string:position} 在$string中, 从位置$position开始提取子串 ${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串 ${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串 ${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串 ${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串 ${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串 ${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring ${string//substring/replacement} 使用$replacement, 代替所有匹配的$substring ${string/#substring/replacement} 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring ${string/%substring/replacement} 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

说明:"* $substring”可以是一个正则表达式.


1.长度

[WEB97@salewell97 ~]$ test='I love china'
[web97@salewell97 ~]$ echo ${#test}
12

${#变量名}得到字符串长度 

2.截取字串

[chengmo@localhost ~]$ test='I love china'
[chengmo@localhost ~]$ echo ${test:5}  
e china
[chengmo@localhost ~]$ echo ${test:5:10} 
e china

${变量名:起始:长度}得到子字符串 

3.字符串删除

[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ echo ${test#/}
c:/windows/boot.ini
[chengmo@localhost ~]$ echo ${test#*/}
windows/boot.ini
[chengmo@localhost ~]$ echo ${test##*/}
boot.ini

[chengmo@localhost ~]$ echo ${test%},${test%/*} 分别是得到文件名,或者目录地址最简单方法。

4.字符串替换

[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ echo ${test///\}
c:windows/boot.ini
[chengmo@localhost ~]$ echo ${test////\}
c:windowsboot.ini

${变量/查找/替换值} 一个“/”表示替换第一个,”//”表示替换所有,当查找中出现了:”/”请加转义符”/”表示。

三、性能比较

在shell中,通过awk,sed,expr 等都可以实现,字符串上述操作。下面我们进行性能比较。

[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=${#test};done;

real 0m0.173s
user 0m0.139s
sys 0m0.004s

[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;

real 0m9.734s
user 0m1.628s

速度相差上百倍,调用外部命令处理,与内置操作符性能相差非常大。在shell编程中,尽量用内置操作符或者函数完成。使用awk,sed类似会出现这样结果。

--结束END--

本文标题: linux shell 字符串操作(长度,查找,替换)详解

本文链接: https://www.lsjlt.com/news/19192.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux vim查找与替换操作
    这篇文章主要讲解了“Linux vim查找与替换操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux vim查找与替换操作”吧!查找/csdn   &n...
    99+
    2023-06-13
  • 如何分析Java字符串的比较,查找及替换等操作
    如何分析Java字符串的比较,查找及替换等操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:...
    99+
    2023-06-26
  • linux中shell字符串操作的详细介绍
    本篇内容主要讲解“linux中shell字符串操作的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中shell字符串操作的详细介绍”吧!在做shell批处理程序时候,经常会涉及...
    99+
    2023-06-09
  • C语言字符串替换:字符,字符串,字符数组详解
    在C语言中,字符串是由字符数组表示的。一个字符串是一个以null字符('\0')结尾的字符数组。字符替换:要替换字符串中的某个字符,...
    99+
    2023-08-15
    C语言
  • 讨论Golang中的字符串替换操作
    Golang是一门高效的编程语言,它的特点是可读性强、编写代码简单,且具有极高的执行速度。作为一名Golang开发者,我们会经常遇到需要对字符串进行操作的情况,而Golang提供了许多方便的函数和方法来满足这种需求。其中一个常见的需求就是替...
    99+
    2023-05-14
  • C语言字符串替换:字符,字符串,字符数组详解
    目录案例描述案例分析必备知识1,字符数组(1)字符数组的定义(2)字符数组的初始化2,字符串概念(1)字符串的概念(2)用字符初始化字符数组(3)获取字符串的长度3,字符串与指针4,...
    99+
    2024-04-02
  • php字符串查找最后一个字符如何实现替换
    今天小编给大家分享一下php字符串查找最后一个字符如何实现替换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、PHP 查找...
    99+
    2023-07-05
  • PHP字符串替换操作,区分大小写
    ...
    99+
    2024-04-02
  • linux shell中Grep命令查找多个字符串
    在Linux shell中,可以使用grep命令查找多个字符串。以下是几种常用的方式:1. 查找任意一个字符串:```$ grep ...
    99+
    2023-08-14
    linux
  • PHP字符串替换操作,不区分大小写
    ...
    99+
    2024-04-02
  • Python中的字符串查找和替换技巧有哪些?
    Python中的字符串查找和替换技巧有哪些?(具体代码示例)在Python中,字符串是一种常见的数据类型,我们在日常编程中经常会遇到字符串的查找和替换操作。本文将介绍一些常用的字符串查找和替换技巧,并配以具体的代码示例。查找子串在字符串中查...
    99+
    2023-10-22
    find replace 字符串查找和替换技巧: strtranslate
  • Python字符串的搜索与替换的操作方法
    这篇文章将为大家详细讲解有关Python字符串的搜索与替换的操作方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python字符串中的搜索和替换:* S.find(substr,...
    99+
    2023-06-17
  • mgo指定字符串长度查找数据的案例分析
    mgo指定字符串长度查找数据的案例分析?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!     ...
    99+
    2024-04-02
  • linux下使用sed命令查找和替换文件中字符串的方法
    这篇文章主要讲解了“linux下使用sed命令查找和替换文件中字符串的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下使用sed命令查找和替换文件中字符串的方法”吧!sed 命...
    99+
    2023-06-16
  • python字符串基础操作详解
    目录字符串的赋值单引号字符串赋值给变量双引号字符串赋值给变量三引号字符串赋值给变量(多行)字符串的截取截取指定位置的字符获取指定位置之后的所有字符截取指定位置之前的所有字符获取所有的...
    99+
    2024-04-02
  • linux shell字符串内置的常用操作介绍
    本篇内容介绍了“linux shell字符串内置的常用操作介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在编写shell程序时,经常会涉...
    99+
    2023-06-09
  • Java中String字符串替换3种方法详解
    1.replace()方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串) 字符串.replace(String oldChar, String newChar) ...
    99+
    2023-09-05
    java 开发语言 jvm
  • C语言字符串替换空格实例详解
    目录一、题目描述二、思路分析三、整体代码总结一、题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例: 输入:s = "We a...
    99+
    2024-04-02
  • Python replace()函数使用详解,Python替换字符串
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 replace...
    99+
    2023-09-11
    python 网络安全 机器学习 人工智能
  • 详解php整数转为固定长度字符串
    近年来,随着互联网技术的不断发展,PHP作为流行的服务器端脚本语言,在Web开发领域中广泛应用。在实际开发中,经常会遇到需要将整数转换为固定长度的字符串的需求。下面,本文将介绍如何使用PHP实现整数转换为固定长度字符串的功能。一、问题描述在...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作