gpt4 book ai didi

macos - 从 sed 中提取多个捕获组到变量

转载 作者:行者123 更新时间:2023-11-29 08:52:39 24 4
gpt4 key购买 nike

我有以下文字

abc <THIS> abc <THAT> abc <WHAT> abc

其中 abc 是定义明确的表达式的占位符。我想提取括号中的 3 个术语并将它们保存在 3 个单独的变量中。是否可以在不解析文本 3 次的情况下做到这一点?基本上我想捕获并以某种方式“导出”多个组。

很明显,我可以像这样提取其中之一:

VARIABLE=`echo $TEXT | sed "s_abc <\(.*\)> abc <.*> abc <.*> abc_\1_g"`

但是否有可能在不运行 sed 3 次的情况下获得全部 3 个?

也欢迎使用没有 sed 的其他(可移植)解决方案。

最佳答案

如果您知道有任何字符不会出现在THISTHATWHAT 中,那么你可以这样写:

IFS=$'\t' read -r VAR1 VAR2 VAR3 \
< <(sed 's/^abc <\(.*\)> abc <\(.*\)> abc <\(.*\)> abc$/\1\t\2\t\3/' \
<<< "$TEXT"
)

告诉 sed 在其输出中使用该分隔符,并告诉 read 在其输入中使用该分隔符。

关于macos - 从 sed 中提取多个捕获组到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236566/

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