gpt4 book ai didi

linux - Bash编程快速搜索和提取方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:48 25 4
gpt4 key购买 nike

我有一个很长的多行字符串,可能包含超过 1300 个单词。

编辑:我想从字符串中搜索并提取大约两个值,并将其存储到一个变量中以进行格式化和其他处理。

我可以将字符串转换为数组并循环行并通过以下方式搜索每一行

while read -r line; do
arr+=("$line")
done <<< "$ACSCH"

for i in "${arr[@]}"
do
if [[ "$i" =~ "level 1: src="(.*)$ ]]; then
SRC=${BASH_REMATCH[1]}
fi
if [[ "$i" =~ "level 1: dst="(.*)$ ]]; then
DST=${BASH_REMATCH[1]}
fi
done

我知道我也可以通过以下方式搜索字符串:

if [[ "$ACSCH" =~ "src="([[:alnum:]]*) ]]; then
SRC=${BASH_REMATCH[1]}
fi

但我不知道如何搜索附加变量

我能想到的唯一方法就是在整个字符串上搜索另一种方法

if [[ "$ACSCH" =~ "DST="([[:alnum:]]*) ]]; then
DST=${BASH_REMATCH[1]}
fi

这是正确的方法还是有更好的方法?

哪种方式会更快;进入一个循环并在每一行中搜索我的变量、我的其他方法或我目前还不知道的其他方法,这就是我在这里寻求帮助的原因。

**编辑:输入示例:....... src=19r4345e3e dst=1kje3dkj35 之间的一些其他文本 未知长度的其余文本

示例输出:SRC=19r4345e3e |夏令时=1kje3dkj35

然后我可以进一步处理我的 SRC 和 DST 变量。**

谢谢!--E

最佳答案

当你想查找字符串“word1”、“word2”、“string with spaces and word3”和“word4”时,你可以使用:

echo "$ACSCH" | grep -Eo "word1|word2|string with spaces and word3|word4"

当您有更多单词要查找时,请考虑使用 grep 选项 -f

关于linux - Bash编程快速搜索和提取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188307/

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