Unix 如何在日志文件中找到损坏的字符?

Unix 如何在日志文件中找到损坏的字符?,unix,Unix,是否有一种快速而肮脏的方式来打印日志文件中包含非打印字符的所有行?喜欢排队吗 TEST Ò 可通过以下方式生成: int main(int arg, char** argv) { char buffer[32]; buffer[0] = 1234; buffer[1] = '\0'; fprintf(stderr, "TEST %s\n", buffer); } 将grep与perl正则表达式选项一起使用。如果正则表达式包含的字符太多或不够多(可能制表符可以?某些unicod

是否有一种快速而肮脏的方式来打印日志文件中包含非打印字符的所有行?喜欢排队吗

TEST Ò
可通过以下方式生成:

int main(int arg, char** argv)
{
  char buffer[32];
  buffer[0] = 1234;
  buffer[1] = '\0';
  fprintf(stderr, "TEST %s\n", buffer);
}

将grep与perl正则表达式选项一起使用。如果正则表达式包含的字符太多或不够多(可能制表符可以?某些unicode字符可以?),则可以将正则表达式更改为指向正确的字符范围:

我会用

awk -e '!/^[A-Z]*$/ {print $0}' ./test
打印包含不在指定范围内的字符的所有行

说明

awk -e
使用以下代码调用程序

'!/^[A-Z]*$
启动与正则表达式(
)不匹配的任何内容相匹配的规则

 {print $0}'
如果规则匹配,则打印整行

 ./test
传递要操作的文件


注意:请注意,您可能必须调整正则表达式以适应您的数据,因为您没有向我们提供足够的测试数据。

我们可以猜测您需要什么,但请给出“损坏字符”和“坏
printf
调用”的示例`我假设您指的是非打印字符,如控制字符?是的,非打印字符,我已经用一个例子说明了。
 ./test