gpt4 book ai didi

linux - Bash:通过忽略空格的定界符拆分字符串

转载 作者:太空狗 更新时间:2023-10-29 11:35:29 25 4
gpt4 key购买 nike

我有这样的字符串

name1::1.1.1.1::ps -ax

我想使用 bash 脚本根据分隔符 :: 拆分字符串。

期望的输出应该是一个包含 3 个元素的数组

("name1" "1.1.1.1" "ps -ax")

没有双引号

感谢您的帮助。

最佳答案

假设数组数据中没有:,使用bash模式替换将::压缩为: 同时将字符串分配给 $array,然后显示整个数组,然后仅显示元素 #2:

a="name1::1.1.1.1::ps -ax"
IFS=: array=(${a//::/:}) ; echo ${array[@]} ; echo "${array[2]}"

输出:

name1 1.1.1.1 ps -ax
ps -ax

但是如果数组数据中有:呢?特别是在第三个字段(命令)中,在该字段中。使用带有虚拟变量的 read 来吸收额外的 :: 分隔符:

a="name1::1.1.1.1::parallel echo ::: 1 2 3 ::: a b"
IFS=: read x a y b z <<< "$a"; array=("$x" "$y" "$z"); printf "%s\n" "${array[@]}"

输出:

name1
1.1.1.1
parallel echo ::: 1 2 3 ::: a b

关于linux - Bash:通过忽略空格的定界符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com