使用sed在大括号中提取子字符串

The*_*ama 6 bash sed

我现在有一个字符串如下:

integration@{Wed Nov 19 14:17:32 2014} branch: thebranch
Run Code Online (Sandbox Code Playgroud)

这包含在一个文件中,我解析了这个字符串.但是我想要括号之间的值{Wed Nov 19 14:17:32 2014}

我对Sed没有经验,说实话我发现它有点神秘.

到目前为止,我已经设法使用以下命令,但输出仍然是整个字符串.

我究竟做错了什么?

sed -e 's/[^/{]*"\([^/}]*\).*/\1/'
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 6

要获取 之间的值{}

$ sed 's/^[^{]*{\([^{}]*\)}.*/\1/' file
Wed Nov 19 14:17:32 2014
Run Code Online (Sandbox Code Playgroud)


Jot*_*tne 5

这很简单awk,而不是复杂的正则表达式。

awk -F"{|}" '{print $2}' file
Wed Nov 19 14:17:32 2014
Run Code Online (Sandbox Code Playgroud)

它将字段分隔符设置为{or },那么您的数据将位于第二个字段中。

FS 可以这样设置:

awk -F"[{}]" '{print $2}' file
Run Code Online (Sandbox Code Playgroud)

查看所有字段:

awk -F"{|}" '{print "field#1="$1"\nfield#2="$2"\nfield#3="$3}' file
field#1=integration@
field#2=Wed Nov 19 14:17:32 2014
field#3= branch: thebranch
Run Code Online (Sandbox Code Playgroud)