外壳:如何确定文件是否包含一个或多个空字符?



有一些很好的答案可以解决从文件中删除空字符的问题 - 似乎sed可能是最有效的方法。但是,我能够找到的所有其他问题都不涉及查找空字符,而是删除它们。

有一些问题确实提供了有效的解决方案 - 但是,我很难找到一个不依赖于GNUisms的符合POSIX的解决方案。我看到的两个解决方案使用带有 -v 选项的 cat 和带有 -P 选项的 grep(两者都不支持(。

我养成了尽可能多地委托给 shell 的习惯,但 shell 在这里帮不了我,因为不可能在变量中存储空字符。外部工具是唯一的选择,但是当我遵守符合 POSIX 的选项时,我什至找不到使用它们的方法。

一种可能的方法是trwc

[ "$(tr -cd '' < file | wc -c)" -ge 0 ]

或者,odgrep将允许停止第一个而不读取文件的其余部分:

od -A n -t x1 file | grep -q 00

使用tr -d '00'将 null 修剪为临时文件,并使用wc -c获取文件中的字符数。 如果临时文件与包含空值的原始文件不匹配(cmp -s(,并且wc的输出可用于计算空值的数量 - 问题的重点。

PS:grep -P也不是POSIX。 在POSIX中也找不到-C选项。

相关内容

  • 没有找到相关文章

最新更新