我正在尝试的是,从一个文件中读取所有字符串,其中也包含特殊字符,即。 ,/ \'“等 并且我正在使用grep以上字符串来执行一个文件的cat来检查发生但是它不适用于某些特殊字符串。
FILE1.TXT
Error:'abcd' not found; Try Again
Error:load() loading provider library version 3.5(r182) By <info@xyz.com>
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 <info@xyz.com>
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
但它将其视为
grep -i -F 'Error:'\''abcd'\'' not found; Try Again'
并没有显示任何正确的输出。
那么我们如何忽略其中的所有特殊字符? 没有任何特殊字符的其他字符串工作正常。
由于
答案 0 :(得分:0)
您可以使用tr
并替换所有标点字符(如果不需要)
...
while read STRING
do
cat Filename.log | tr "[:punct:]" " " | grep -i -F "$STRING"
done<file1.txt
或| tr "\\\',/" " "
其他角色。
答案 1 :(得分:0)
这就是你所追求的,使用
-f FILE, - file = FILE 从FILE获取模式,每行一个。空文件包含零模式,因此不匹配任何内容。 (-f是 由POSIX指定。)
$ cat file1.txt
Error:'abcd' not found; Try Again
Error:load() loading provider library version 3.5(r182) By <info@xyz.com>
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 <info@xyz.com>
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 <info@xyz.com>
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'