gpt4 book ai didi

bash - 检查子字符串是否包含在字符串中并且至少具有前 4 个字符

转载 作者:行者123 更新时间:2023-12-03 16:53:05 26 4
gpt4 key购买 nike

示例字符串是:

abcdefghijklmno
如果我输入:
abc                 FALSE    #at least 4 characters.
abcd TRUE
cdefg FALSE #because the match must start from the first character.
abcde TRUE
abcdeghi FALSE #because the characters must be contained consecutively.
abcdefgh TRUE
abcdefghi TRUE
abcdefghijklmno TRUE
abcdefghijklmnop FALSE #because it exceeds the example string.
我试过了:
set -- abc
i=1
[[ abcdefghijklmno == ${!i}* ]]
echo $?
但是 echo "$?"返回 0也有 3、2、1 或 0 个字符。
其他代码显然是错误的,但它是为了传达我想做的事情:
set -- abc
i=1
[[ abcdefghijklmno == ${!i}{4}* ]]
echo $?
编辑:
适合我的解决方案如下:
set -- abc
i=1
[[ abcdefghijklmno == ${!i}* && $(expr length "${!i}") -ge 4 ]]
echo $?

最佳答案

您可以联系我们 awk :

awk -v s='abcdefghijklmno' '{
print $0, (length($1) > 3 && index(s, $1) == 1 ? "TRUE" : "FALSE")}' file | column -t

abc FALSE
abcd TRUE
cdefg FALSE
abcde TRUE
abcdeghi FALSE
abcdefgh TRUE
abcdefghi TRUE
abcdefghijklmno TRUE
abcdefghijklmnop FALSE
解释:
  • column命令仅用于表格输出。
  • length($1) > 3 && index(s, $1) == 1 : 检查第一个字段长度大于3的条件和 $1从给定字符串中的第一个位置找到 s .

  • 或者,我们也可以使用正则表达式来检查 $1 的存在从一开始:
    awk -v s='abcdefghijklmno' '{
    print $0, (length($1) > 3 && s ~ "^" $1 ? "TRUE" : "FALSE")
    }' file

    关于bash - 检查子字符串是否包含在字符串中并且至少具有前 4 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66796774/

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