Shell分割迭代字符串

本文介绍了如何在Shell中将字符串按冒号分隔,并提供了五种不同的解决方案,包括直接读取和迭代分隔内容的方法,如设置IFS变量和使用read命令。

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

问题:

IN=”www:wangliang:hello”以冒号分隔,读取分割的内容www,wangliang和hello。

解答

前言

如果是是一空格(空白)为分隔符,下面是一种解决方案:

sentence="This is a sentence."
for word in $sentence
do
        echo $word
done

如果是要求直接读取,不迭代,下面是一种解决方案:
line=www:wangliang:hello
read p1 p2 p3 <<< (IFS=":";echo line)
echo p1, p2, p3


以下是多种方法:

solution 1

IFS=':' read -ra ADDR <<< "$IN"

#printf "%s\n" "${ADDR[@]}"
#echo "[" ${ADDR[0]} "]" "[" ${ADDR[1]} "]" "[" #${ADDR[2]} "]"

for i in "${ADDR[@]}"; do
    echo $i
done

solution 2

for i in $(echo $IN | tr ":" "\n")
do
  echo $i
done

solution 3

arrIN=(${IN//:/ })
# printf "%s\n" "${arrIN[@]}"
echo "[" ${arrIN[0]} "]" "[" ${arrIN[1]} "]" "[" ${arrIN[2]} "]"

solution 4

echo $IN | sed -e 's/:/\n/g'

solution 5

read ADDR1 ADDR2 ADDR3 <<<$(IFS=":"; echo $IN)
echo $ADDR1 "----" $ADDR2 "---" $ADDR3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值