gpt4 book ai didi

regex - sed -n 中的多模式

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:17 25 4
gpt4 key购买 nike

我知道有很多关于这个主题的问题。但我在个案基础上需要帮助。当我尝试在选项中输入 3 个以上的模式时,我会得到这样的错误...

sed: -e expression #1, char 24: unknown command: `,'

我只想打印括号里的字..

这是sed命令

sed -n '/QUEUE/,/CURDEPTH/,/DESCR/ {
s/QUEUE(\(.*\))\(.*TYPE(.*)\)/\1/
s/QUEUE(\(.*\))/\1/
s/TYPE(.*).*CURDEPTH(\(.*\))/\1/
s/CURDEPTH(\(.*\))/\1/
s/TYPE(.*).*DESCR(\(.*\))/\1/
s/DESCR(\(.*\))/\1/
p
}
' | awk '{ if ((NR %2) == 0) { printf("%s\n", $0) } else { printf("%s", $0) } }'

和输出...

test.msg.queue   0)                             DESCR(TQ : 001

谢谢...

示例输出

1 : dis q(test.msg.queue) CURDEPTH DESCR
AMQ0086: Display Queue details.
QUEUE(test.msg.queue) TYPE(QLOCAL)
CURDEPTH(0) DESCR(TQ : 001)

最佳答案

你有错误的期望。您问的是 sed 指令的“地址”部分,它指定 sed 应在哪些行上应用以下命令。 sed 不接受那里的地址列表。它接受单个地址(通常但不总是正则表达式)或地址范围,以逗号分隔的开始和结束地址表示。没有接受三个或更多正则表达式的逗号分隔列表的地址形式。

但是 sed 不需要那个;你把事情搞得太复杂了。正则表达式已经自然地提供了匹配单独选项列表的功能。这就是 | 运算符的用途:

sed -n '/QUEUE\|CURDEPTH\|DESCR/ {
s/QUEUE(\(.*\))\(.*TYPE(.*)\)/\1/

...

关于regex - sed -n 中的多模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52049824/

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