匹配文件和行号与sed

时间:2016-06-08 12:28:11

标签: regex vim sed

我有一个看起来像这样的字符串:

app/views/pages/_my_events_for_ba.html.erb:11:    ba_mbn_programs = Program.ba_and_managed_bar.all(:conditions => "user_programs.user_id = #{current_user.id} and brand_id = #{brand.id}", :order => :name, :joins => [:user_programs], :select => "distinct programs.*")

我正在尝试隔离行号11和文件名app/views/pages/_my_events_for_ba.html.erb,以便我可以通过vim +11 app/views/pages/_my_events_for_ba.html.erb打开带有这些参数的vim。

但是我无法像我想要的那样让sed的比赛工作。我的尝试适用于vim的正则表达式,但不适用于sed:

sed 's/\(.*\):\([0-9]\+\).*/\1 \2/p'

1 个答案:

答案 0 :(得分:4)

您可以使用awk

awk -F: '{print $1, $2}'

正则表达式解决方案可能如下所示:

sed -r 's/([^:]*):([0-9]*):.*/\1 \2/'