shell(42) : 切割字符串

本文介绍在Shell脚本中如何对字符串进行分割,并将其转换为数组形式。提供了两种方法:一种是通过修改IFS变量来实现,另一种是使用函数配合awk命令完成特定下标的元素提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考 : 【shell】shell字符串分割|文件分割|剪切|截取_bandaoyu的博客-CSDN博客_shell 字符串分割

 切割成数组(不能函数调用,因为不知道如何返回数组)

# 字符串
str="1_2_3_4_5" 
# 切割符
splitChar="_" 
# 切割后数组
array=

## 切割代码[开始]
OLD_IFS="$IFS" 
IFS=$splitChar             
array=($str)     
IFS="$OLD_IFS"
## 切割代码[结束]

for item in ${array[@]}
do
echo $item
done

 切割返回指定下标1(支持函数调用)

# 参数1: 要切割的字符串
# 参数2: 切割符
# 参数3: 切割后返回指定下标元素(从0开始)
function split(){
	#保存当前shell默认的分割符,一会要恢复回去
	OLD_IFS="$IFS" 
	#将shell的分割符号改为第二个参数 
	IFS=$2          
	#分割符是第二个参数,根据第二个参数切割第一个参数        
	array=($1)     
	#恢复shell默认分割符配置
	IFS="$OLD_IFS"  
	echo ${array[$3]}
}
 

 切割返回指定下标2(支持函数调用) 

# 参数1: 要切割的字符串
# 参数2: 切割符
# 参数3: 切割后返回指定下标元素(从0开始)
function split(){
	s=${1//$2/" "}
	echo $s |awk '{print "'"$3"'"}'
}

切割成数组 

a="1212|44545"
s=${a//"|"/" "}
echo ${s[*]}

for t in ${s[@]}
do
  echo "[$t]"
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值