0

$SQL_RESULT 通常是这样的:

TDM_PROC
-------------------------------------------------------------------
N

我需要从中提取最后一个单词(在本例中为 N)。

在 bash 3.2 中,我使用了这个表达式:

if [[ $SQL_RESULT =~ "(\w+)$" ]] ; then
  RES=${BASH_REMATCH[1]}
else
  echo "Error" > $LOG_FILE
  exit 1
fi

我发现在 bash 4 中我不应该使用引号,但它仍然不起作用

if [[ $SQL_RESULT =~ (\w+)$ ]] ; then
  RES=${BASH_REMATCH[1]}
else
  echo "Error" > $LOG_FILE
  exit 1
fi

任何帮助表示赞赏。

4

2 回答 2

2

使用以下 BASH shell 选项:

shopt -s compat31

允许在正则表达式匹配中引用。使用上述选项集,您可以按照通常的方式进行操作:

if [[ $SQL_RESULT =~ "([A-Za-z0-9_]+)$" ]] ; then
  RES=${BASH_REMATCH[1]}
else
  echo "Error" > $LOG_FILE
  exit 1
fi
于 2013-04-16T17:31:15.707 回答
0

以下对我有用bash 4.0。请注意,我曾经$'\n'在组之前指定换行符(..)。另外,我替换\w.

 if [[ $SQL_RESULT =~ ^.*$'\n'(.+?)$ ]]; then RES=${BASH_REMATCH[1]}; else echo '

不'; 菲

echo $RES
N
于 2013-04-16T16:58:37.487 回答