0

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

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

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

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

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

4

3 回答 3

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'

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

于 2012-04-04T13:12:17.090 回答
0

你可以使用 sed:

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

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

sed -i 's/[^[:alnum:]_#]\+/\n/g' dump
于 2012-04-04T13:28:38.053 回答
0

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

grep -o '[[:alpha:]][[:alnum:]_#]*'
于 2012-04-04T13:47:49.467 回答