【发布时间】:2017-06-30 14:29:59
【问题描述】:
我正在尝试的是,从一个文件中读取所有字符串,其中还包括特殊字符,即。 ,/\'“ ETC。 我正在用 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'
文件名.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'
并且没有显示任何正确的输出。
那么我们怎样才能忽略 this 里面的所有特殊字符呢? 其他没有任何特殊字符的字符串都可以正常工作。
谢谢
【问题讨论】:
-
特殊字符包括:'()@#$? ~
-
@anubhava,它是一个错误日志文件,通常包含错误消息,例如上面一个“错误:'abcd'未找到;再试一次”,日期和时间,其他包括IP地址和电子邮件ID。唯一关心的是我要过滤的字符串中的特殊字符。
-
试试
grep -i -F file1.txt Filename.log问题很不清楚。请提供示例输入和预期输出。 -
尝试使用
tr:cat Filename.log | tr "[:punct:]" " " | grep -i -F "$STRING"