bash自带的切片操作

bash自带的切片操作


bash 复制代码
echo ${#a} 	# $a中字符串的个数
echo ${a:3} 	# $a中从第三个开始取直到结束
echo ${a:3:2}	# $a中从第三个开始去两个字符
echo ${a: -1}	# 取最后一个字符
echo ${a#*.} 	# 从左边开始删除直到遇到.为止
echo ${a##*.} 	# 从左边开始删除直到遇到最后一个.为止
echo ${a%.*}	# 从右面开始删除直到遇到.为止
echo ${a%%.*}	# 从右面开始删除直到遇到最后一个.为止
echo ${a//abc/xyz}	# 将变量a中的所有的abc替换成xyz
echo ${1#--check=}  #删除第1个位置变量里的--check=字符串
echo ${1##[-+]}   #删除第1个位置变量的内容开头的-或者+

cut 截取字符串

-c, --characters=LIST

select only these characters
- 表示连续
, 表示不连续

bash 复制代码
[root@rocky ~]# str="pythoniloveyou"
[root@rocky ~]# echo $str
pythoniloveyou
[root@rocky ~]# echo $str|cut -c 1-6
python
[root@rocky ~]# echo $str|cut -c 1,6
pn
[root@rocky ~]# echo $str|cut -c 1,6-9
pnilo

统计一个字符串的个数

bash 复制代码
[root@rocky ~]# echo ${#str}
14
[root@rocky ~]# echo $str|wc -L
14

截取

bash 复制代码
[root@rocky ~]# echo ${str:0:6}
python
[root@rocky ~]# echo ${str:7:4}
love
[root@rocky ~]# echo ${str: -3}
you

从左边开始删除直到遇到.为止

bash 复制代码
[root@rocky ~]# bigcity="beijing.shanghai.guangzhou.shenzhen.changsha"
[root@rocky ~]# echo ${bigcity#*.}
shanghai.guangzhou.shenzhen.changsha
[root@rocky ~]# echo ${bigcity##*.}
changsha

从右面开始删除直到遇到.为止

bash 复制代码
[root@rocky ~]# echo ${bigcity%.*}
beijing.shanghai.guangzhou.shenzhen
[root@rocky ~]# echo ${bigcity%%.*}
beijing

删除第一个位置变量的内容开头的-或者+

bash 复制代码
[root@rocky shell]# vim slice.sh
echo ${1##[-+]}

[root@rocky shell]# bash slice.sh abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno
[root@rocky shell]# bash slice.sh +abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno
[root@rocky shell]# bash slice.sh -abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno

删除第一个位置变量里的 --check=字符串

bash 复制代码
[root@rocky shell]# cat slice.sh 
echo ${1##[+-]}
echo ${1#--check=}
[root@rocky shell]# bash slice.sh --check=root
-check=root
root

如果nicelevel变量存在就输出它的值,如果没有赋值,则输出空值

bash 复制代码
[root@rocky shell]# nicelevel=100
[root@rocky shell]# echo ${nicelevel:-}
100

如果niceleve1l变量存在就输出它的值,如果没有赋值,则输出0

bash 复制代码
[root@rocky shell]# echo ${nicelevel1:-}

[root@rocky shell]# echo ${nicelevel1:-0}
0

替换

bash 复制代码
[root@rocky shell]# num="123123456123"
[root@rocky shell]# echo ${num/123/abc}
abc123456123
[root@rocky shell]# echo ${num//123/abc}
abcabc456abc
相关推荐
在世修行11 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_9628857211 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI11 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
Wang's Blog12 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
信誓旦旦的程序猿12 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫12 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
下一站春风里12 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
天外飞雨道沧桑13 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl13 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_13 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php