【问题标题】:Remove a line with condition删除带有条件的行
【发布时间】:2012-03-09 11:54:01
【问题描述】:
ALTER TABLE variable ADD KEY somekey name

我想从文本文件中删除该行,下面提到的 sed 正在按预期工作。

sed '/ADD\ KEY/d' 

但“ADD KEY”一词可能位于文本文件中的其他位置,我不想删除该行。

如何删除所有以“ALTER TABLE”开头的“ADD KEY”行?

【问题讨论】:

    标签: regex sed


    【解决方案1】:
     sed '/ALTER TABLE .* ADD KEY .*/d' FILE 
    

    也应该完成这项工作。顺便说一句,你不需要屏蔽空白。

    【讨论】:

      【解决方案2】:

      做:

      sed '/^ALTER TABLE/{/ADD\ KEY/d}'
      

      第一个 /^ALTER TABLE/ 检查以 ALTER TABLE 开头的行,如果是,则继续使用 /ADD\ KEY/d

      【讨论】:

        【解决方案3】:

        您需要编辑正则表达式以匹配您需要的开头的行,即:

        sed '/^ALTER\ TABLE.*ADD\ KEY/d'
        

        这是
        - 以“ALTER TABLE”开头的行
        - 后跟 0 个或多个“任何东西”
        - 后跟“添加密钥”

        【讨论】:

          猜你喜欢
          • 2021-10-15
          • 2021-07-09
          • 1970-01-01
          • 2011-10-02
          • 2015-11-10
          • 1970-01-01
          • 2020-09-05
          • 1970-01-01
          相关资源
          最近更新 更多