【问题标题】:How to remove preceding spaces before non space text begins + regex + sed +如何在非空格文本开始之前删除前面的空格+ regex + sed +
【发布时间】:2018-02-23 15:22:56
【问题描述】:

如何在我的echo 的输出中删除809 前面的空格??

这是我的示例:

$ echo '   809 23/Dec/2008:19:20'
   809 23/Dec/2008:19:20
^^^3 spaces here preceding the 809    

我可以使用 sed 删除 3 或 4 个空格:

        ...4 spaces here   
$ echo '    809 23/Dec/2008:19:20' | sed 's/^.\{3\,4\}//'
809 23/Dec/2008:19:20
0 spaces here preceding the 809    

但我想要的是我的 sed 命令可以处理大于 3 的任何东西

        .....5 spaces here
$ echo '     809 23/Dec/2008:19:20' | sed 's/^.\{3\,4\}//'
 809 23/Dec/2008:19:20
^1 spaces here preceding the 809    

如何在 sed 中编写正则表达式以删除 809 之前的 3 个或更多空格?

【问题讨论】:

  • 如果您想在开头删除 3 个或更多空格,请使用 sed 's/^[[:blank:]]\{3,\}//'
  • 也许^\s{3,}
  • 一定要用sed吗? xargs 会自动删除空格。
  • 你为什么在正则表达式中使用.?这匹配任何字符,而不仅仅是空格。

标签: regex bash sed


【解决方案1】:

如果您想在开始时删除 3 个或更多空格,请使用

sed 's/^[[:blank:]]\{3,\}//'

详情

  • ^ - 输入开始
  • [[:blank:]]\{3,\} - 任何水平空格连续出现 3 次或更多次。

如果您需要在特定值之前删除 3+ 个空格,例如 809,只需将该值添加到正则表达式和替换模式:

sed 's/^[[:blank:]]\{3,\}809/809/'

或使用捕获组和占位符:

sed 's/^[[:blank:]]\{3,\}\(809\)/\1/'

【讨论】:

    【解决方案2】:

    xargs 让您无需考虑正则表达式。

    $ echo '   809 23/Dec/2008:19:20' | xargs
    809 23/Dec/2008:19:20
    

    这或多或少是xargs 的一个非常规的把戏。该工具旨在用于构建具有长参数列表的命令。从手册页:

    xargs 从标准输入读取项目,由空格分隔(可以用双引号或单引号或 反斜杠)或换行符,并执行命令

    但是,在发送到后续命令之前,将修剪空白是预处理的一部分。在这种情况下,没有后续命令,因此 xargs 只是将参数按原样发送到标准输出,并以修剪后的空格为模,这正是您所要求的。

    【讨论】:

    • 很高兴知道echo ' 809 23/Dec/2008:19:20' | xargs 809 23/Dec/2008:19:20 你能简单解释一下xargs吗?
    • @HattrickNZ 我又添加了几句话来解释它为什么会起作用。
    【解决方案3】:

    您可以使用 {minimum,maximum} 指定要使用的字符数。 如果您将最大值留空,它将匹配至少具有最少字符数的任何内容。所以选择三个空格将是“\{3,\}”。祝你好运!

    【讨论】:

      【解决方案4】:

      不要转义逗号:

      $ echo '             809 23/Dec/2008:19:20' | sed -s 's/^ \{3,\}//'
      809 23/Dec/2008:19:20
      

      【讨论】:

        猜你喜欢
        • 2018-09-05
        • 2019-01-28
        • 2020-11-04
        • 2020-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        相关资源
        最近更新 更多