代码之家  ›  专栏  ›  技术社区  ›  devops

Sed-删除破折号前的所有字符

  •  1
  • devops  · 技术社区  · 7 年前

    我在档案中有以下内容

    devtools-cloudformation
    devtools-common-rpm
    

    我想删除devtools-并保持其余字符不变,我尝试了下面的命令,但它删除了所有的破折号

    sed 's/.*-//' projects.txt
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   devops    7 年前

    为我工作

    sed 's/-/\n/;s/.*\n//' projects.txt
    
        2
  •  0
  •   Robert Kock    7 年前

    第一 破折号。
    试试这个:

    sed 's/[^\-]*-//'
    

    如果您想保持第一个破折号:

    sed 's/[^\-]*-/-/'
    

    解决方案不起作用的原因是正则表达式 .*- 意思是“后面跟着破折号的任何东西”。
    devtools-common- 符合此条件,因此被删除。
    我建议的表达方式是“除了破折号,后面跟着破折号”。