Linux终端中的字符串使用总结(截取,切片,查找替换,转换,变量赋值等)
1、基于模式匹配截取字符串
1、#、##号截取
#号截取,从左边开始,以一个出现的分隔符(最左)为准,删除左边字符。
##号截取,从左边开始,以最后(最右)一个分隔符为准,删除左边字符。
str='hello world'
echo ${str#*l}
echo ${str##*l}
echo ${str##*llo}
#*l 表示从左边开始删除第一个出现的w左边的所有字符。##*l 表示从左边开始删除最后一个出现的w左边的所有字符。
2、%、%%号截取
%号截取,从右边开始,以一个出现的分隔符(最右)为准,删除右边字符。
%%号截取,从右边开始,以最后一个出现的分隔符(最左)为准,删除右边字符。
str='hello world'
echo ${str%l*}
echo ${str%%l*}
echo ${str%lo*}
%l* 表示从右边开始删除第一个出现的w右边的所有字符。%%l* 表示从右边开始删除最后一个出现的w右边的所有字符。
2、字符串切片
字符串切片:${var:offset:length}
1、当length为正数
str='hello world'
echo ${str::} #从第0个字符开始,截取7个字符。
echo ${str:} #从左边开始第七个字符,一直到结束。
echo ${str:-:} #从右边开始第七个字符,截取2个字符。
echo ${str:-:} #从右边开始第七个字符,截取3个字符。
echo ${str:-} #从右边开始第七个字符,一直到结束。
2、当length为负数
str='hello world'
echo ${str::-} #从第0个字符开始,一直到倒数第二个字符。
echo ${str:-:-} #从右往作数的第七个字符开始,一直到倒数第二个字符。
echo ${str::-} #从第四个字符开始,一直到倒数第二个字符。
echo ${str: -} #从右边开始(倒数)第二个字符,一直到最后。注意冒号后有空格,等效于${str:0-2}。
3、查找替换字符串
${var/pattern/substi}:查找var所表示的字串中,第一次被Pattern匹配到的字串,并以substi替换之。
${var//patten/substi}:查找var所表示的字串中,所有被Pattern匹配到的字串,并以substi替换之。
${var/#pattern/substi}:以行首锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之。
${var/%pattern/substi}:以行尾锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之。
以上均可使用?, *元字符。
str='hello world'
echo ${str/l/e}
echo ${str//l/e}
echo ${str/#l/e}
echo ${str/#hel/e}
echo ${str/%ld/e}
echo ${str/h*o/hi}
echo ${str/h??/eee}
${var/pattern}:替换为空,即删除pattern匹配到的第一次出现。
${var//pattern}: 删除pattern匹配到的所有出现。
${var/#pattern}
${var/%pattern}
使用方法同上。
4、字符串大小写转换
${var^^}:小写-->大写
${var,,}:大写-->小写
str='hello WORLD'
echo ${str^^}
echo $str | tr '[a-z]' '[A-Z]'
echo ${str,,}
echo $str | tr '[A-Z]' '[a-z]'
大小写转换的方式很多,还包括 declare、awk等。
5、变量赋值
有无冒号存在细微差别
1、有冒号
通常用来表示变量是否有值(定义且非空)。
${var:-word}: 如果var为空或未设置,那么返回word;否则,则返回var中的值;
${var:=word}:如果var为空或未设置,那么返回word,并且将word赋值给var;否则,返回var中的值;
${var:?err_info}:如果var为空或未设置,那么返回错误信息;否则,则返回var自身的值;
${var:+word}:如果var自身有正常数据,则返回word;
str='hello world'
echo ${str:-word}
str=''
echo ${str:-word}
echo ${str:=word}
echo $str
echo ${str:?error}
str=''
echo ${str:?error}
echo $? #查看上条命令是否返回错误信息
echo ${str:+word}
str='asdas'
echo ${str:+word}
2、无冒号
若去掉冒号则表示变量为空也视为变量有正常值存在。通常用来表示变量是否定义。
str='hello world'
echo ${str-word}
str=''
echo ${str-word}
echo ${strr-word}
echo $str
echo ${str?error}
echo ${strr?error}
echo $? #查看上条命令是否返回错误信息
Linux终端中的字符串使用总结(截取,切片,查找替换,转换,变量赋值等)的更多相关文章
- 如何在 Linux 终端中知道你的公有 IP
导读 在本文中我将会介绍在几种在 Linux 终端中查看你的公有 IP 地址的方法.这对普通用户来说并无意义,但 Linux 服务器(无GUI或者作为只能使用基本工具的用户登录时)会很有用.无论如何, ...
- 在Linux终端中查看公有IP的方法详解
首先回顾一下一般的查看IP的命令: ifconfigLinux查看IP地址的命令--ifconfigifconfig命令用于查看和更改网络接口的地址和参数 $ifconfig -a lo0: fla ...
- python代码在linux终端中执行报错:Unable to init server: Could not connect: Connection refused
python代码在linux终端中执行时报错: Unable to init server: Could not connect: Connection refused Unable to init ...
- SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换
SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换 场景一:表单中的日期字符串和JavaBean的Date类型的转换 在使用SpringMVC的时候,经常会遇到表单中的 ...
- 在Linux终端中快速生成、解码二维码
我们要实现两个功能: 解码Linux屏幕上的二维码,将结果输出在终端 在终端中将字符串转为二维码,直接显示二维码在终端中以供扫描 实现方法 生成二维码 qrencode是一个常见的生成二维码的CLI程 ...
- 花里胡哨,如何在Linux终端输出带有颜色的字体,将带颜色的字体赋值给变量
背景 在日常操作Linux的情况下,总会遇到一些需求,比如说,把输出的内容用不同颜色标注出来,以达到醒目.提示的目的,那么如何在Linux终端输出带有颜色的字体呢? Linux终端输出字符颜色 ...
- shell总结:读取文件、参数、if、分割字符串、数组长度、空文件、变量赋值、多进程、按行切割文件、查看线程
Reference: http://saiyaren.iteye.com/blog/1943207 1. Shell 读取文件和写文件 for line in $(<top30000. ...
- AngularJS中使用$parse或$eval在运行时对Scope变量赋值
在"AngularJS中自定义有关一个表格的Directive"中自定义了一个有关表格的Direcitve,其表格的表现方式是这样的: <table-helper datas ...
- LInux终端中Ctrl+S卡死
因为初学Linux,在vim中写东西是总是喜欢按Ctrl+s来保存内容导致终端突然卡主,然后上网查资料发现了Ctrl+s 暂停屏幕输出[锁住终端]而对应的按键是Ctrl+q 恢复屏幕输出[解锁终端]
随机推荐
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- Oracle存储过程(增、删、改)写法、oracle执行存储过程
Oracle存储过程(增.删.改)写法 发布时间: 2010-3-24 11:07 作者: ZHF 来源: 51Testing软件测试网采编 字体: 小 中 大 | 上一篇 下一篇 ...
- C# winfrom TCP 服务端和客户端(链接)
1.C#Winform TCP 之服务端: 可以参考下面链接,比较好.第二个链接可以看看,提供了一个思路. http://www.cnblogs.com/guolebin7/archive/2013/ ...
- go语言---map
go语言---map https://blog.csdn.net/cyk2396/article/details/78890185 一.map的用法: type PersonDB struct { I ...
- [Codeforces 466C] Number of Ways
[题目链接] https://codeforces.com/contest/466/problem/C [算法] 维护序列前缀和 , 枚举中间一段即可 , 详见代码 时间复杂度 : O(N) [代码] ...
- maven仓库管理
maven仓库管理很重要,如果是依赖jar下不到或下错了或出现莫名的报错.曾几何时为此花费了不少时间. 首先,注意自己maven仓库配置,里面有本地仓库目录和远程maven仓库,当自己本地没有依赖时可 ...
- java用户角色权限设计
实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...
- Objective-C NSObject与运行时系统
创建: 2018/01/26 完成: 2018/02/02 遗留: TODO NSObject 运行时系统 程序运行时候起作用的系统? NSObject是运行时系统的接口(API) 属性 只有一 ...
- 怎样去思考问题 解决问题 zkc学长的福利
题目描述 又是一年ACM集训的时刻,zkc学长邀请n位同学来玩一个有奖游戏.首先,他让每个同学在左.右手上面分别写下一个整数,zkc学长自己也在左.右手上各写一个整数.然后,让这n位同学排成一排,zk ...
- PWBI--Excel 数据源
博客园地址: http://blog.sina.com.cn/s/blog_68c4467d0102w5cc.html http://www.cnblogs.com/asxinyu/p/Power_B ...