【发布时间】:2019-07-09 20:09:17
【问题描述】:
我编写了一个 sed 脚本来从命令的多行输出中提取字段的值,但它不起作用,而且我看不出有什么问题。
$ cf target | sed -e 's/space:\s+\(\S+\).*/\1/p'
api endpoint: https://api.sys.gn01.pcf.my.com
api version: 2.112.0
user: userid
org: cart-creation
space: stage
我希望看到值 stage,但是当我使用 -n 选项时,我根本看不到任何输出。我取出上面的-n 只是为了显示我的命令的输出是什么样的。
【问题讨论】:
-
+是扩展正则表达式 (ERE) 的一部分。 Sed 默认使用基本正则表达式 (BRE),它没有那个量词。 GNU sed 将其作为扩展提供,但必须对其进行转义:\+。 -
似乎更容易做到
awk '$1 == "space:" { print $2}' -
@BenjaminW.,在这种情况下它是必需的,因为 OP 想要匹配它以便 可以 被丢弃。也许只需要
sed -n 's/^space:[[:blank:]]\+//p' -
谢谢,我对 awk 不太熟悉,但你说得对,它超级简单,我会用它。
标签: sed