【发布时间】:2019-04-30 22:06:13
【问题描述】:
我不经常使用 awk 或 sed。感谢您在以下方面的帮助:
我有一个带有值的 bash shell 变量 $VAR:
DEFINE QLOCAL ('IIB.TESTQUEUE.MODULE') +
DESCR('Input queue for A to B') +
LIKE('MY.LOCALQ.TEMP') +
REPLACE
我想提取值IIB.TESTQUEUE.MODULE
在 QLOCAL<0 or more spaces>(' 和 ') 之间来自 shell 变量 $VAR。
我根据其他现有问题和在线正则表达式工具构建了以下正则表达式,但是当我尝试将此正则表达式嵌入 awk 或 sed 时,这并没有打印任何内容。
【问题讨论】:
-
我正在尝试排除单引号并稍作修改。
$ echo $MQSCCMD | sed 's/.*QLOCAL*('\([^)]*\).*/\1/'bash: syntax error near unexpected token `)' ...看到转义单引号不起作用。 -
你无法在 bash 单引号内转义 anything。它看到的第二个单引号终止了字符串。单引号不能出现在单引号字符串中。
-
grep -oP "your_pattern" file?我看到你在你的后视中有*量化模式。我可以建议一个 PCRE 正则表达式与 GNUgrep/pcregrep一起使用吗? -
使用基本正则表达式
sed "s/^.*QLOCAL[ ][(][']\([^']*\)['][)].*$/\1/" <<<$var -
尝试执行最简单的命令会得到各种奇怪/奇妙/不可能的结果,这意味着您没有告诉我们您是如何执行命令的。你说的是错误的事情,例如在your first comment above 中,该代码没有转义任何单引号,也没有告诉我们错误消息,因此我们必须查看实际的完整屏幕截图来帮助您。