2017-06-30 128 views
-1

我想要的是,從一個文件中讀取所有字符串,其中還包括特殊字符ie。/\'」等 和我做一個文件的貓使用grep上面的字符串來檢查發生,但它不工作了一段特殊的字符串。如何從一個文件讀取特殊字符的字符串到grep

FILE1.TXT

Error:'abcd' not found; Try Again 
Error:load() loading provider library version 3.5(r182) By <[email protected]> 
Warning: Connection to group 'xyz-xyz' 

Filename.log

2017-06-19 06:50:28 Error:'abcd' not found; Try Again 
2017-06-19 06:50:28 Error:load() loading provider library version 3.5(r182) By <[email protected]> 
2017-06-19 06:50:28 Warning: Connection to group 'xyz-xyz', peer '00.00.01.01:2200,00.00.01.01:2200,00.00.01.01:2200' 

內部腳本test1.sh

while read STRING 

do 

cat Filename.log | grep -i -F "$STRING" 

done<file1.txt 

,但把它讀成

並且沒有顯示出任何正確的輸出。

那麼我們怎麼能忽略裏面的所有特殊字符呢? 沒有任何特殊字符的其他字符串正常工作。

感謝

+0

特殊字符包括:「()<> @#$? 〜 – user2710412

+0

@anubhava,它的錯誤日誌文件,通常包含錯誤消息 ,比如上面的一個「錯誤:'abcd'未找到;再次嘗試」,包含日期和時間,其他包括IP地址和電子郵件ID。 只關心是我想過濾的字符串內的特殊字符。 – user2710412

+1

試試'grep -i -F file1.txt Filename.log'問題很不清楚。請提供示例輸入和預期輸出。 –

回答

0

您可以使用tr和替換所有的標點字符如果不需要他們

... 
while read STRING 
do 
cat Filename.log | tr "[:punct:]" " " | grep -i -F "$STRING" 
done<file1.txt 

或者| tr "\\\',/" " "另一個字符。

+0

這是一種方法,但我們再次依賴於我們在腳本上傳遞的特殊字符。 我們可以通過什麼方式將整個字符串傳遞給雙引號「...」 – user2710412

+0

您可以用'| TR「「」「\」」'逃逸符號''' - '錯誤:\‘ABCD \’未找到;' – zombic

0

這是你所追求的,使用

-f FILE, --file=FILE Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.)

$ cat file1.txt 
Error:'abcd' not found; Try Again 
Error:load() loading provider library version 3.5(r182) By <[email protected]> 
Warning: Connection to group 'xyz-xyz' 

$ cat Filename.log 
2017-06-19 06:50:28 Error:'abcd' not found; Try Again 
2017-06-19 06:50:28 Error:load() loading provider library version 3.5(r182) By <[email protected]> 
2017-06-19 06:50:28 Warning: Connection to group 'xyz-xyz', peer '00.00.01.01:2200,00.00.01.01:2200,00.00.01.01:2200' 

$ grep -i -f file1.txt Filename.log 
2017-06-19 06:50:28 Error:'abcd' not found; Try Again 
2017-06-19 06:50:28 Error:load() loading provider library version 3.5(r182) By <[email protected]> 
2017-06-19 06:50:28 Warning: Connection to group 'xyz-xyz', peer '00.00.01.01:2200,00.00.01.01:2200,00.00.01.01:2200' 

enter image description here

+0

感謝弗雷德裏克它是爲上述情況下工作的偉大,但有一個情況下,這是不適合工作我,如果file1.txt字符串是以任何特殊字符開頭的.. 即。 [Error]:'abcd'not founf; ........ – user2710412

+0

再次,爲我工作(tm),我使用'grep(GNU grep)2.20' –

相關問題