【问题标题】:find strings that are alnum and can contain _ or #查找 alnum 且可以包含 _ 或 # 的字符串
【发布时间】:2012-04-04 21:47:49
【问题描述】:

我已经尝试过几次让 grep 或 sed 来做我想做的事,但到目前为止都失败了,所以如果有人能提供帮助,我将不胜感激!

我有一个文本文件,其中填充了我使用 sysinternals strings.exe 从内存转储中提取的字符串行。 我现在需要将此文件过滤为单个字符串,因为其中很多是无用的垃圾(例如:&644*/;@)或附加在一行上的多个字符串,例如:

&644*/;@
string1
string2;@%string3*£""^string4

我需要的字符串可以由字母数字、下划线 (_) 和哈希 (#) 组成,因此 string_string#1 或 examplestring 或 example_string。

综上所述,使用上面的例子我需要能够过滤string1、string2、string3和string4。

【问题讨论】:

    标签: string filter sed grep


    【解决方案1】:

    不清楚你到底想要什么,但也许你只是在寻找:

     < path-to-text-file tr \; '\012' | tr -d -c 'A-Za-z0-9_#'
    

    这将删除所有不需要的字符并将分号转换为换行符。

    或者你只是想要

    < path-to-text-file tr -sc 'a-zA-Z0-9_#' '\012'
    

    这将使用单个换行符转换您想要忽略的每个连续字符序列。

    【讨论】:

    • 谢谢!第二个正是我想要的。
    【解决方案2】:

    你可以使用 sed:

    sed 's/[^[:alnum:]_#]\+/\n/g' dump > strings
    

    或者内联,如果你的 sed 支持的话:

    sed -i 's/[^[:alnum:]_#]\+/\n/g' dump
    

    【讨论】:

      【解决方案3】:

      由于您要排除“644”(这是一个字母数字字符串),我建议

      grep -o '[[:alpha:]][[:alnum:]_#]*'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-14
        • 2014-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-07
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多