如何为sed正则表达式

时间:2016-04-10 15:18:01

标签: regex sed

这是Using sed to remove everything after a [[:space:]]的另一部分。我知道StackOverflow想要新问题,而不是现有问题的附加组件。

我想从包含DW_Prod的字符串中删除非路径字符后的所有内容。现在,我说结肠和空格是字符串的结尾。是的,我知道路径可能包含空格。这些不应该。如果遗漏了,那么这个文档就可以了。

$ echo "blah DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" |
    sed 's#.*\(DW_Prod.*\)\(:\|[[:space:]]\).*#\1#'
DW_Prod\Facets\UNRCH_MBRS:

正则表达式如何知道()指定的结果组与(a|b|c)指定的交替组之间的区别?

1 个答案:

答案 0 :(得分:1)

  

我想删除之后的所有内容... DW_Prod ...我说冒号和空格是字符串的结尾。

$ echo "blah DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \
  sed -n -e 's#^.*\(DW_Prod.*[:[:space:]]\).*$#\1#p'
DW_Prod\Facets\UNRCH_MBRS:

或者

$ echo "blah DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \
  sed -n -e 's#^.*\(DW_Prod[^:[:space:]]*[:[:space:]]\).*$#\1#p'
DW_Prod\Facets\UNRCH_MBRS: