如何删除空格后的所有内容?如果我指定冒号,我可以这样做:'而不是[[: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
答案 0 :(得分:2)
您正在使用-r
启用ERE metachars,然后通过转义分隔符(...)
并通过转义反斜杠{{禁用反向引用\(...\)
来禁用ERE捕获组\1
1}}。试试这个:
\\1
你真正需要的只是:
$ echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \
sed -r -e 's#.*(DW_Prod.*)[[:space:]].*#\1#'
DW_Prod\Facets\UNRCH_MBRS:
答案 1 :(得分:1)
你可以使用grep -o(完全匹配)和不是空格的正则表达式:
grep -o '^[^ ]*' <<< "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql"
答案 2 :(得分:0)
删除空格后的所有内容,即:
echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | sed -r 's/([[:space:]]+).*/\1/'