gpt4 book ai didi

regex - 使用 =~ 匹配到 bash 正则表达式中的行尾

转载 作者:行者123 更新时间:2023-12-04 02:31:15 25 4
gpt4 key购买 nike

我正在尝试使用 bash 正则表达式匹配来解析多行字符串中的一行。为什么以下不起作用?

if [[ $qout =~ ${q}[^\n]* ]] ; then
它匹配到字母 n .我尝试使用 \\n甚至 \\\n ,但没有任何效果。 $qout包含:
unrouted    0   0   running
dead-letter 0 0 running
$q包含 unrouted . ${BASH_REMATCH[0]评估为:
unrouted    0   0   ru
我究竟做错了什么?

最佳答案

[\n]不匹配换行符——它匹配文字反斜杠或 n .如果您运行 nl=$'\n'然后使用 $nl是你的正则表达式,事情会按预期工作。

#!/usr/bin/env bash
qout='unrouted 0 0 running
dead-letter 0 0 running'

q=unrouted

nl=$'\n'
if [[ $qout =~ ${q}[^$nl]*[$nl] ]]; then
declare -p BASH_REMATCH
else
echo "No match found" >&2
fi
...作为输出发出:
declare -ar BASH_REMATCH=([0]=$'unrouted    0   0   running\n')

关于regex - 使用 =~ 匹配到 bash 正则表达式中的行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64082165/

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