2012-04-04 53 views
0

我已經嘗試了幾次讓grep或sed做我想做的事情,至今都失敗了,所以如果有人能幫助我,我會非常感激!查找字符串是鋁和可以包含_或#

我有一個文本文件填充了我使用sysinternals strings.exe從內存轉儲中提取的字符串行。 我現在需要到單個字符串過濾此文件作爲它的很多是無用的垃圾(如:& 644 * /; @)或幾個附加條件在一行如:

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

我需要的琴絃可以由字母數字,下劃線(_)和哈希(#)組成,如string_string#1或examplestring或example_string。

總之,使用上面的例子,我需要能夠過濾string1,string2,string3和string4。

回答

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' 

將,你想用一個單一的換行符忽略連續的字符每個序列轉換。

+0

謝謝!第二個正是我想要的。 – Twisted89 2012-04-04 13:23:28

0

你可以使用SED:

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

或內聯,如果您的sed支持它:

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

既然要排除 「644」(這是字母數字字符串),我d建議

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