如何使用sed提取模式

时间:2018-10-19 21:04:07

标签: regex awk sed grep

我已经尝试使用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命令的整个输出手动写入一个文件,然后运行它,那么它实际上就可以了。因此,关于gcloud如何输出其数据,这有点奇怪。

1 个答案:

答案 0 :(得分:0)

使用grep,您可以做到:

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

结果:

abc123