Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用Linux shell检查文本文件中不可查看的字符_Bash_Shell - Fatal编程技术网

Bash 如何使用Linux shell检查文本文件中不可查看的字符

Bash 如何使用Linux shell检查文本文件中不可查看的字符,bash,shell,Bash,Shell,当我在Ubuntu中键入此命令时: # cat -A my.config 它输出: ^@^@^@^@^@^@^@^@^@^@^@ 但对于: # cat my.config 航站楼里什么也没显示 那么,从bash中,如何判断文件是否包含这些奇怪的字符呢 谢谢 这些字符是空字节。您可以通过以下方式在文件中搜索它们: grep -Pa '\x00' /folder/file 您还可以使用以下命令搜索文件中的所有非ASCII字符: grep -Pa "[\x80-\xFF]" /folder/f

当我在Ubuntu中键入此命令时:

# cat -A my.config
它输出:

^@^@^@^@^@^@^@^@^@^@^@
但对于:

# cat my.config
航站楼里什么也没显示

那么,从bash中,如何判断文件是否包含这些奇怪的字符呢

谢谢

这些字符是空字节。您可以通过以下方式在文件中搜索它们:

grep -Pa '\x00' /folder/file
您还可以使用以下命令搜索文件中的所有非ASCII字符:

grep -Pa "[\x80-\xFF]" /folder/file
最后,您可以使用以下代码检查文件夹中所有文件上的所有非ASCII字符:

grep -Pa -r "[\x80-\xFF]" /folder
注意:这个答案的核心依赖于grep-p,它可能不适用于所有grep版本。另外,来自grep man关于-P选项的介绍:

-P、 -perl regexp 将模式解释为Perl正则表达式。这是高度实验性的,grep-P可能会警告未实现的特性

这些字符是空字节。您可以通过以下方式在文件中搜索它们:

grep -Pa '\x00' /folder/file
您还可以使用以下命令搜索文件中的所有非ASCII字符:

grep -Pa "[\x80-\xFF]" /folder/file
最后,您可以使用以下代码检查文件夹中所有文件上的所有非ASCII字符:

grep -Pa -r "[\x80-\xFF]" /folder
注意:这个答案的核心依赖于grep-p,它可能不适用于所有grep版本。另外,来自grep man关于-P选项的介绍:

-P、 -perl regexp 将模式解释为Perl正则表达式。这是高度实验性的,grep-P可能会警告未实现的特性


假设您的帖子中的可视类与grep类匹配,这应该是可行的

grep -la "[^[:graph:]]"

假设您的帖子中的可视类与grep类匹配,这应该是可行的

grep -la "[^[:graph:]]"

八进制转储是您的朋友:

od -c my.config

八进制转储是您的朋友:

od -c my.config

它们是NUL字节。但是,如果您可以测试它们,您会如何处理这些信息?使用file命令,它会告诉您该文件是文本文件还是其他文件。编程问题也是如此,而不是关于使用Unix的问题。从交互角度讲,您已经知道如何处理这些信息了—您正在问题本身中显示这一事实!那么真正的问题是什么?它们是NUL字节。但是,如果您可以测试它们,您会如何处理这些信息?使用file命令,它会告诉您该文件是文本文件还是其他文件。编程问题也是如此,而不是关于使用Unix的问题。从交互角度讲,您已经知道如何处理这些信息了—您正在问题本身中显示这一事实!那么,真正的问题是什么呢?抱怨使用GNUisms时没有明确的警告或警告warning@Charles现在好点了吗?如果您认为应该添加另一个警告,请再次评论。是的。我试图决定是否提出这个问题,因为OP在标题中明确指定了Linux,GNU grep在那里最常见-但是,有相当多的嵌入式Linux系统运行Busybox,或者有一些运行GNU grep编译而没有可选的-意思是,即使使用最新的GNU grep-PCRE支持,也不总是在中编译。抱怨使用GNUISM时没有明确的警告或警告warning@Charles现在好点了吗?如果您认为应该添加另一个警告,请再次评论。是的。我试图决定是否提出这个问题,因为OP在标题中明确指定了Linux,GNU grep在那里最常见-但是,有相当多的嵌入式Linux系统运行Busybox,或者有一些运行GNU grep编译而没有可选的-意思是,即使使用最新的GNU grep-PCRE支持,也不总是在中编译。实际上,与您链接到的GNU特定文档相比,有更有力的保证,这将是可用的-图形字符类是,因此缺席-这个答案将保证在所有POSIX平台上都能工作。实际上,比您链接到的GNU特定文档更能保证这个答案的可用性-图形字符类是其中的一部分,因此缺席-这个答案将保证在所有POSIX平台上都能工作。