【问题标题】:search and remove string with variable parameters搜索并删除带有可变参数的字符串
【发布时间】:2015-12-28 10:02:25
【问题描述】:

我需要在 OSX 上使用命令行从文本文件中删除字符串。

字符串将具有一些永久特征,但具有任意数字。

我想删除 :-

的所有变体
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]    

这个字符串有不同的值,但我想删除它,只留下标签部分中的相关信息:-

 PAttern1 :
 Code :
 CodeHash :
 Result :

下面的 MOCK 过程需要发生

 for each line{
if string contains [%d%d%d.%d%d Kkey/s][total %d%d%d%d%d%d%d][Prob %d.%d%][%d%d% in %d.%dh]  (where "%d" is decimal value){

delete string and line

}
else if !contains {

 move down 1 line.
}
{

对于下面的文本,只有模式和散列应该保存到文本文档中

            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]



            PAttern1: i want to keep all the text after pattern and all the code until the next line of processing including hash
            Code : aksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsd

            CodeHash : e3287cb701f336a628885e66d17e38f2

            Result : D0B6789D4E0ACF39A8C24B424C0060FFFF2DA857



            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]

            PAttern2: i want to keep all the text after pattern and all the code until the next line of processing including hash
            Code : qwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrq

            CodeHash : 05bfabd43ff6c85a8fa2d3347d828c4b

            Result : 165B6CA902E567959C9BB599FABEB3998B21E31F


            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]
            [370.15 Kkey/s][total 2999999][Prob 0.0%][50% in 7.8h]
            [370.02 Kkey/s][total 3000368][Prob 0.0%][50% in 7.8h]
            [323.02 Kkey/s][total 3001368][Prob 0.0%][50% in 7.8h]
            [389.02 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [379.06 Kkey/s][total 3003368][Prob 0.0%][50% in 7.8h]
            [300.01 Kkey/s][total 3004368][Prob 0.0%][50% in 7.8h]
            [379.02 Kkey/s][total 3005368][Prob 0.0%][50% in 7.8h]
            [279.02 Kkey/s][total 3006368][Prob 0.0%][50% in 7.8h]
            [179.02 Kkey/s][total 3007898][Prob 0.0%][50% in 7.8h]

使生成的文本文档看起来像这样:-

            PAttern1 : i want to keep all the text after pattern and all the code until the next line of processing including hash
            Code : aksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsdaksjhdakjsdhakshdkasdhkashkjahsd
            CodeHash : e3287cb701f336a628885e66d17e38f2
            Result : D0B6789D4E0ACF39A8C24B424C0060FFFF2DA857
            PAttern2 : i want to keep all the text after pattern and all the code until the next line of processing including hash
            Code : qwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrqgfqwfufiyfoqywfofqwytrq
            CodeHash: 05bfabd43ff6c85a8fa2d3347d828c4b
            Result : 165B6CA902E567959C9BB599FABEB3998B21E31F

我使用 sed 来删除单个字符,如下所示:-

 sed -i '' 's/%/\ /g' file.txt 
 sed -i '' 's/\[/\ /g' file.txt
 sed -i '' 's/]/\ /g' file.txt
 sed -i '' 's/Kkey\/s/\ /g' file.txt

虽然这适用于符号,但我无法猜测数字或 sed 出数字,以防它们在重要的字符串中,并用 sed 替换它!

考虑到上述例程,您将如何处理?

非常感谢您提供的任何帮助

【问题讨论】:

    标签: macos bash perl sed terminal


    【解决方案1】:

    Perl 命令行解决方案:

    perl -ne 'print if /\S/ &&  !m|\[\d+\.\d+ Kkey/s]\[total \d+]\[Prob \d+\.\d+%]\[\d+% in \d+\.\d+h]|' your_input_file > your_output_file
    

    【讨论】:

    • 这个好像没有效果
    • 这似乎不太可能。当我运行它时,我会得到一个包含你想要的行的输出文件。如果它对您不起作用,那么您的环境中可能有一些您没有告诉我们的不寻常之处。
    【解决方案2】:

    您可以将grep-v 一起使用:

    grep -v 'Kkey/s.*total.*Prob' < input > output
    

    或者如果你也想删除空行:

    egrep '^[ \t]*(PAttern1|Code|CodeHash|Result) : ' < input > output
    

    【讨论】:

    • egrep 似乎效果最好。我可以使用它内联,所以它不需要创建一个新文件?如果我这样做 输出 ~/Desktop/file.txt 它会留下一个空白文件。
    • 不能内联,但是可以写到一个临时文件,然后替换原来的:egrep '^[ \t]*(PAttern1|Code|CodeHash|Result) : ' &lt; ~/Desktop/file.txt &gt; .output.txt ; mv ~/Desktop/file.txt ~/Desktop/file.txt.backup ; mv .output.txt ~/Desktop/file.txt
    • iv 刚刚注意到在我使用的实际示例中,标题后有一个新行,因此脚本失败
    • 例如。 PAttern1: examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1examplepattern1
    • grepegrep 具有 -A-B 开关,因此您可以在之后或之前拉线。
    猜你喜欢
    • 2017-11-14
    • 2015-11-05
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多