我现在有一个字符串如下:
integration@{Wed Nov 19 14:17:32 2014} branch: thebranch
这包含在一个文件中,我解析了字符串。但是我想要括号{Wed Nov 19 14:17:32 2014}
我对Sed没有经验,说实话我发现它有点神秘。
到目前为止,我已设法使用以下命令,但输出仍然是整个字符串。
我做错了什么?
sed -e 's/[^/{]*"\([^/}]*\).*/\1/'
答案 0 :(得分:4)
这与awk
非常简单,而不是复杂的正则表达式。
awk -F"{|}" '{print $2}' file
Wed Nov 19 14:17:32 2014
它将字段分隔符设置为{
或}
,然后您的数据将位于第二个字段中。
FS
可以这样设置为:
awk -F"[{}]" '{print $2}' file
要查看所有字段:
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
答案 1 :(得分:3)
获取{
,}
$ sed 's/^[^{]*{\([^{}]*\)}.*/\1/' file
Wed Nov 19 14:17:32 2014
答案 2 :(得分:2)
这可能有效
sed -e 's/[^{]*\({[^}]*}\).*/\1/g'
测试
$ echo "integration@{Wed Nov 19 14:17:32 2014} branch: thebranch" | sed -e 's/[^{]*{\([^}]*\)}.*/\1/g'
Wed Nov 19 14:17:32 2014
<强>正则表达式强>
[^{]*
匹配{
以外的任何内容,即integration@
([^}]*)
捕获组1
\{
匹配{
[^}]*
匹配}
以外的任何内容,即Wed Nov 19 14:17:32 2014
\}
与}
.*
与其他
答案 3 :(得分:1)
简单地说,下面的命令也可以得到数据......
echo "integration@{Wed Nov 19 14:17:32 2014} branch: thebranch" | sed 's/.*{\(.*\)}.*/\1/g'