Regex 在bash中找到模式的第四个匹配项后获取所有字符串
以字符串开头,如:Regex 在bash中找到模式的第四个匹配项后获取所有字符串,regex,bash,shell,Regex,Bash,Shell,以字符串开头,如: String=1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS. 匹配第4个冒号之后的所有字符串并在shell脚本中为变量赋值所需的正则表达式,如: var_result="Searching done for the string:SUCCESS." 下面的解决方案可能会对您有所帮助。 假设以下是变量的值: var="1973251922:19732519
String=1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS.
匹配第4个冒号之后的所有字符串并在shell脚本中为变量赋值所需的正则表达式,如:
var_result="Searching done for the string:SUCCESS."
下面的解决方案可能会对您有所帮助。 假设以下是变量的值:
var="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
echo "$var"
1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS.
echo "$var" | awk -F":" '{$1=$2=$3=$4="";sub(/^:+/,"");print $0}' OFS=":"
Searching done for the string:SUCCESS.
下面的解决方案可能会对您有所帮助。 假设以下是变量的值:
var="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
echo "$var"
1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS.
echo "$var" | awk -F":" '{$1=$2=$3=$4="";sub(/^:+/,"");print $0}' OFS=":"
Searching done for the string:SUCCESS.
使用shell bash或POSIX
${string*:*:*:*:}是前缀删除的一个示例。它删除由四个冒号分隔的字符串组成的前缀
输出可以保存在shell变量中:
$ var_result=${string#*:*:*:*:}
$ echo "$var_result"
Searching done for the string:SUCCESS.
$ var_result=$(sed -E 's/([^:]*:){4}//' <<<"$string")
$ echo "$var_result"
Searching done for the string:SUCCESS.
使用切割
这方面的工作:
$ string="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
$ cut -d: -f 5- <<<"$string"
Searching done for the string:SUCCESS.
如果您只有一个POSIX shell,而不是bash,那么我们需要使用echo:
更安全的是,printf:
使用sed
以下使用sed删除冒号定义的前四个字段:
$ sed -E 's/([^:]*:){4}//' <<<"$string"
Searching done for the string:SUCCESS.
以下内容同样适用于POSIX Shell:
$ var_result=$(printf '%s' "$var" | sed -E 's/([^:]*:){4}//')
$ echo "$var_result"
Searching done for the string:SUCCESS.
使用shell bash或POSIX
${string*:*:*:*:}是前缀删除的一个示例。它删除由四个冒号分隔的字符串组成的前缀
输出可以保存在shell变量中:
$ var_result=${string#*:*:*:*:}
$ echo "$var_result"
Searching done for the string:SUCCESS.
$ var_result=$(sed -E 's/([^:]*:){4}//' <<<"$string")
$ echo "$var_result"
Searching done for the string:SUCCESS.
使用切割
这方面的工作:
$ string="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
$ cut -d: -f 5- <<<"$string"
Searching done for the string:SUCCESS.
如果您只有一个POSIX shell,而不是bash,那么我们需要使用echo:
更安全的是,printf:
使用sed
以下使用sed删除冒号定义的前四个字段:
$ sed -E 's/([^:]*:){4}//' <<<"$string"
Searching done for the string:SUCCESS.
以下内容同样适用于POSIX Shell:
$ var_result=$(printf '%s' "$var" | sed -E 's/([^:]*:){4}//')
$ echo "$var_result"
Searching done for the string:SUCCESS.
使用bash regex,您可以说:
String="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
if [[ $String =~ ^([^:]*:){4}(.+)$ ]]; then
echo ${BASH_REMATCH[2]}
fi
使用bash regex,您可以说:
String="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
if [[ $String =~ ^([^:]*:){4}(.+)$ ]]; then
echo ${BASH_REMATCH[2]}
fi
请在帖子中为示例输入/输出使用代码标记。请在帖子中为示例输入/输出使用代码标记。结果应在第4个冒号后包含所有字符串/字符。i、 e result=搜索字符串完成:成功。结果也应该有剩余的字符串。@user3269606,请立即检查。echo$var | awk'{sub/[^::]*:{4}/,}1'结果应该在第四个冒号后面有所有字符串/字符。i、 e result=搜索字符串完成:成功。结果也应该有剩余的字符串。@user3269606,请现在检查。echo$var | awk'{sub/[^:]*:{4}/,}1'${string*:*:*:*:*:*:}似乎做得很好。谢谢:${string*:*:*:*:*:}似乎做得很好。谢谢::