gpt4 book ai didi

arrays - Shell Script 正则表达式匹配数组并处理每个数组元素

转载 作者:行者123 更新时间:2023-12-04 19:43:11 25 4
gpt4 key购买 nike

虽然我用其他语言轻松处理了这项任务,但我不知道在 Shell Scripting (CentOS/BASH) 时使用哪些命令

我有一些正则表达式在我已读取到变量的文件中提供了许多匹配项,并且希望将正则表达式匹配项带到一个数组中以循环并处理每个条目。

正则表达式我通常使用 https://regexr.com/形成我的捕获组,并将其扔给 JS/Python/Go 以获取数组和循环 - 但在 Shell Scripting 中,不确定我可以使用什么。

到目前为止,我已经使用“sed”来查找所有匹配项并替换,但不知道它是否能够返回一个数组以从匹配项中循环。

采用正则表达式,在文件上运行,取回数组。我很想为这个任务提供一些关于 Shell Scripting 的帮助。

编辑 :
根据评论,将其放在一起(不通过 shellcheck.net 工作):

#!/bin/sh
examplefile="
asset('1a/1b/1c.ext')
asset('2a/2b/2c.ext')
asset('3a/3b/3c.ext')
"
examplearr=($(sed 'asset\((.*)\)' $examplefile))
for el in ${!examplearr[*]}
do
echo "${examplearr[$el]}"
done

最佳答案

这适用于mac上的bash:

#!/bin/sh
examplefile="
asset('1a/1b/1c.ext')
asset('2a/2b/2c.ext')
asset('3a/3b/3c.ext')
"
examplearr=(`echo "$examplefile" | sed -e '/.*/s/asset(\(.*\))/\1/'`)
for el in ${examplearr[*]}; do
echo "$el"
done

输出:
'1a/1b/1c.ext'
'2a/2b/2c.ext'
'3a/3b/3c.ext'

注意 $examplefile 用引号括起来,以及使用 sed 将整行替换为匹配项。如果文件中还有其他内容,或者在与“ Assets ”字符串相同的行中,或者在根本没有 Assets 的其他行中,您可以像这样对其进行细化:
#!/bin/sh
examplefile="
fooasset('1a/1b/1c.ext')
asset('2a/2b/2c.ext')bar
foobar
fooasset('3a/3b/3c.ext')bar
"
examplearr=(`echo "$examplefile" | grep asset | sed -e '/.*/s/^.*asset(\(.*\)).*$/\1/'`)
for el in ${examplearr[*]}; do
echo "$el"
done

并达到相同的结果。

关于arrays - Shell Script 正则表达式匹配数组并处理每个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46311679/

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