gpt4 book ai didi

linux - 如何在bash中的某些字符之间获取2个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:03 25 4
gpt4 key购买 nike

字符串:

echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran"

我想在 | 的第一个实例之前获取所有内容以及External_SOC 和;PCRF 之间的所有内容。如果可能的话,将它们存储为 2 个不同的变量。

x=40125512
y=ALPHA3

这给了我以下内容:

sed -e 's/|.*External_SOC=\(.*\);PCRF.*/\1/'

40125512ALPHA3

最佳答案

编辑:根据OP,需要在单行创建2个变量中完成,如果是这种情况,请尝试以下操作。

read -r x y <<<$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*=\([^;]*\).*/\1 \2/')
echo "$x"
40125512
echo "$y"
ALPHA3

或按照 anubhav 先生的评论使用以下内容:

read x y < <(sed -E 's~^([^|]+)\|.*External_SOC=(.+);PCRF.*~\1 \2~' <<< "40125512|abcd32External_SOC=ALPHA3;PCRFabcran")
<小时/><小时/>

您可以尝试关注吗?人们可以通过 2 个单独的命令使用它来创建 2 个单独的变量。

x=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*/\1/')
echo "$x"
40125512

y=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/.*=\([^;]*\).*/\1/')
echo "$y"
ALPHA3

关于linux - 如何在bash中的某些字符之间获取2个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487673/

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