找到alnum的字符串,可以包含_或#

时间:2012-04-04 13:05:51

标签: string filter sed grep

我曾多次尝试过grep或sed来做我想做的事情并且到目前为止失败了所以如果有人能帮忙我会非常感激!

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

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

我需要的字符串可以包含字母数字,下划线(_)和散列(#),所以string_string#1或examplestring或example_string。

总之,使用上面的例子我需要能够过滤string1,string2,string3和string4。

3 个答案:

答案 0 :(得分: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'

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

答案 1 :(得分:0)

您可以使用sed:

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

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

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

答案 2 :(得分:0)

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

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