【问题标题】:How to extract pattern with sed [duplicate]如何使用 sed 提取模式 [重复]
【发布时间】:2018-10-19 21:04:07
【问题描述】:

我曾多次尝试使用不同的工具来使用 unix 工具从文件中提取模式,但我似乎无法让它们做我想做的事。所以我有一个这样的文件:

[blah]
project=abc123

ON#IRUjdi2ujnq!De

我想获取项目名称。

我尝试过使用 grep、egrep、awk 和 sed,但无法让它们正常工作。这是我目前的尝试。

cat file | sed -n "s/project = \(.*\)/\1/p"

这是当前的输出

abc123

ON#IRUjdi2ujnq!De

出于某种原因,它正在考虑匹配最后两行。我认为我的正则表达式需要在 project = 上进行文字匹配,但似乎情况并非如此。

这里有unix向导可以帮我吗?任何标准的 unix 工具都可以。

------ 编辑 ------

所以实际上我的问题略有不同。其实我在做

gcloud config list project | sed -n "s/project = \(.*\)/\1/p"

对不起,我认为这不会有什么不同,但显然这就是问题所在。

如果你这样做gcloud config list project >> file

它实际上只会将你的项目列表输出到文件中,然后它会打印

Your active configuration is: [default]

到终端,这就是把事情搞砸的原因。如果我手动将执行 gcloud 命令的整个输出写入文件,然后运行 ​​sed ,它确实有效。所以 gcloud 输出数据的方式有点奇怪。

【问题讨论】:

标签: regex awk sed grep


【解决方案1】:

使用grep,您可以这样做:

grep -o '^project=.*' file | cut -f2- -d=

结果:

abc123

【讨论】:

    猜你喜欢
    • 2014-08-21
    • 2018-01-08
    • 1970-01-01
    • 2017-03-07
    • 2019-03-29
    • 1970-01-01
    • 2015-07-15
    • 2012-06-20
    • 2018-11-02
    相关资源
    最近更新 更多