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

将bash参数传递到sed以删除行

  •  2
  • jerodsanto  · 技术社区  · 15 年前

    我想写一篇 bash 函数,该函数将接收发送给它的所有参数并将它们推送到 sed 删除与参数匹配的文件中的行。一个用例示例:

    to_delete get the trash
    

    我可以让它“几乎”像这样工作:

    function to_delete() { sed -i -e "/$@/d" /tmp/testfile; }
    

    问题是,只有发送一个命令行参数,它才能工作:

    to_delete get
    

    如果发送多个,则返回此错误:

    sed: 1: "/get": unterminated regular expression
    

    如果我在参数周围加引号,它也会起作用:

    to_delete "get the trash"
    

    但我不想那样做。

    你对如何使这个工作有什么想法吗?谢谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Peer Stritzinger    15 年前

    to_delete foo   bar baz
    

    /foo bar baz/d
    

        2
  •  0
  •   Diego Sevilla    15 年前

    function to_delete() { sed -i -e "/`echo $@`/d" /tmp/testfile; }
    

    $@ /