使用sed删除[[:空格:]后的所有内容

使用sed删除[[:空格:]后的所有内容,sed,grep,Sed,Grep,如何删除空格后的所有内容?如果我指定冒号“:”而不是[[:space:],我就可以这样做 $ cat t.sh echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \ sed -r -e 's#.*\(DW_Prod.*\)[[:space:]].*#\\1#' $ ./t.sh DW_Prod\Facets\UNRCH_MBRS: UNRCH_Members.sql 删除空格后的所有内容,即: echo "DW_Prod\

如何删除空格后的所有内容?如果我指定冒号“:”而不是[[:space:],我就可以这样做

$ cat t.sh
echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \
    sed -r -e 's#.*\(DW_Prod.*\)[[:space:]].*#\\1#'

$ ./t.sh
DW_Prod\Facets\UNRCH_MBRS: UNRCH_Members.sql

删除空格后的所有内容,即:

echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | sed -r 's/([[:space:]]+).*/\1/'

使用
-r
启用ERE元字符,然后通过转义分隔符
\(…\)
禁用ERE捕获组
(…)
,并通过转义反斜杠
\\1
禁用反引用
\1
。试试这个:

$ echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \
    sed -r -e 's#.*(DW_Prod.*)[[:space:]].*#\1#'
DW_Prod\Facets\UNRCH_MBRS:
不过,您真正需要的是:

$ echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" |
    sed 's#[[:space:]].*##'
DW_Prod\Facets\UNRCH_MBRS:
您可以使用grep-o(精确匹配)和非空格的正则表达式:

grep-o'^[^]*'侧注:不需要在管道后转义换行符。去掉sed标志和保留模式上的双转义:
echo“DW#u Prod\\Facets\\UNRCH#u MBRS:UNRCH#u Members.sql”| sed's#.\(DW u Prod.*)[[:space:].*.\1#
所有人的回答都很好。我按时间顺序将第一个标记为答案。非常感谢。您可能需要考虑您得到的答案,而不仅仅是选择从给定的示例输入集中生成预期输出的第一个答案。答案之间存在显著差异。如果你不能通过阅读答案来判断它们是否不同,那么看看其他人的投票数。如果你不清楚区别是什么,那么你应该问问题。我不希望你因为我发表了这篇评论就突然接受我的回答,我只是建议你考虑任何解决方案,而不是仅仅接受第一个