如何在此sed正则表达式中删除此空格?

时间:2013-11-24 22:07:02

标签: regex git bash sed ps1

我有一个来自同事的脚本来格式化我的提示。它使用sed抓取我的分支并使用下面的代码格式化(注意我硬编码了分支名称进行测试):

echo "* master" | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1 /'

为了更多地了解剧本的作用,我正在玩弄它。我注意到它打印了我的分支“master”的名称,但它在分支名称(“master”)之前留下了空格。我想消除空间。我似乎无法做到这一点。

4 个答案:

答案 0 :(得分:2)

您可以通过不使用sed来简化问题

echo "* master" | cut -c3-

答案 1 :(得分:2)

也许你正在寻找这个:

kent$  echo "* master" | sed 's/ \+//'                          
*master

此sed行删除一个或多个空格的第一个出现。

答案 2 :(得分:2)

只需删除\1之前的空格即可。可能你也想删除它背后的空间。

echo "* master" | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'

答案 3 :(得分:0)

与你的硬编码分支相比,原来的sed有点奇怪

  1. 如果不以“*”开头,则删除该行并尝试加载新行。你的分支来自一个多行的文件或命令?
  2. 在“*”之后需要结束。简单地“删除”行的开头

    Your_source | sed -n'/ [^ *] / {s / ^ * // p; q;}'

  3. 仅从"* "开始,删除开始,打印并退出(不超过1行,以"* "处理)