【问题标题】:Remove pattern from a large file (~1G)从大文件中删除模式(~1G)
【发布时间】:2014-12-25 13:38:19
【问题描述】:

我正在尝试从文件 /([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g 中删除此模式 我正在使用sed(但我可以使用 Linux 中的任何其他工具)。

sed 's|/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g||g' test.txt

在上面的命令中,我试图用空字符串替换正则表达式匹配(删除正则表达式匹配) 运行它不会对文件进行任何更改。

这是我在 test.txt 文件中的内容

3149177#sometext.something.a01234.e8f933.1414522190425#{....}3149177#sometext.somethingElsea.a12345.e8f932.1414412190425#{.....}3149177#sometext.somethingElsea.a23456.e8f931.1414512190425#{....}

这是我编辑后想要的内容

{....}{.....}{....}

【问题讨论】:

    标签: regex linux text replace sed


    【解决方案1】:

    你忘记了 sed 的 -i 标志,它负责就地编辑

    引自 man (BSD sed):

     -i extension
             Edit files in-place, saving backups with the specified extension.  If a zero-length extension is given, no backup will be saved.  It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or par-
             tial content in situations where disk space is exhausted, etc.
    

    或 GNU sed:

     -i[SUFFIX], --in-place[=SUFFIX]
              edit files in place (makes backup if SUFFIX supplied)
    

    【讨论】:

      【解决方案2】:

      使用类似的东西

      >>> echo "3149177#sometext.something.a01234.e8f933.1414522190425#{....}3149177#sometext.somethingElsea.a12345.e8f932.1414412190425#{.....}3149177#sometext.somethingElsea.a23456.e8f931.1414512190425#{....}" | sed -r 's/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#//g'
      

      将输出为

      {....}{.....}{....}
      

      【讨论】:

        【解决方案3】:

        您有额外的分隔符和g 标志。这有效:

        sed -i.bak -r 's|([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#||g' test.txt
        {....}{.....}{....}
        

        【讨论】:

          【解决方案4】:

          您可以将正则表达式简化为:

          sed -i.bak -r 's/\d+#\w+(?:\.\w+){4}#//g' test.txt

           \d+ 
           \# \w+ 
           (?: \. \w+ ){4}
           \# 
          

          【讨论】:

            【解决方案5】:

            如果删除行而不是空行是一种可能的解决方案

            fgrep -v '/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g' test.txt
            

            【讨论】:

              猜你喜欢
              • 2014-01-06
              • 2018-01-30
              • 2015-09-05
              • 1970-01-01
              • 2019-02-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多