gpt4 book ai didi

Bash - 比较具有不同分隔符的字符串的简单方法?

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

有没有更好的方法在忽略给定分隔符的情况下检查两个字符串是否相等,例如:

function is_equal() {
local str1="$1"
local delim1="$2"
local str2="$3"
local delim2="$4"

IFS=$delim1 read -r -a array1 <<< "$str1"
IFS=$delim2 read -r -a array2 <<< "$str2"

if [[ ${#array1[@]} -ne ${#array2[@]} ]]; then
return 1
fi

str1raw=$(IFS='' echo "${array1[*]}")
str2raw=$(IFS='' echo "${array2[*]}")

if [ "${str1raw}" != "${str2raw}" ]; then
return 1
fi

return 0
}

is_equal "!etc!daemon!sys.conf" "!" "/etc/daemon/sys.conf" "/"

这可行,但我不想使用数组。

最佳答案

只要您的字符串包含文本数据是安全的,即仅可打印字符,您就可以在比较之前使用参数扩展将分隔符替换为不可打印字符。这样做两个字符串在比较期间共享相同的分隔符:

if [ "${str1//$delim1/\\x01}" = "${str2//$delim2/\\x01}" ] ; then
echo "strings are equal"
fi

我使用不可打印的字符作为分隔符,以确保分隔符不会成为数据本身的一部分。

关于Bash - 比较具有不同分隔符的字符串的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39042499/

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