我测试一组数据文件的内容是否至少包含一组字符中的一个,这些字符由打印和非打印字符组成。
我的最后一个问题是检测文件是否包含换行符。我的GNU grep 3.0声明每个输入都包含一个 LF ......为什么会这样?
echo -n "test" | grep -UF -e $'\x0a'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我怀疑一些隐含的 EOL/EOF 干扰。
Vla*_*eev 10
grep 是面向行的 - 如果输入不以换行符结尾,它仍将最后一个换行符(或文件开头)之后的文本视为一行。
面向行的程序不适合直接处理二进制文件 - 如果二进制文件有特别长的“行”,它们通常会出现病态的情况。
相反,考虑类似的组合tr
和cmp
:
$ echo -n foo | tr -d -c $'\n' | cmp /dev/null -
# no output and exits with status 0
$ echo foo | tr -d -c $'\n' | cmp /dev/null -
cmp: EOF on /dev/null which is empty
# exits with status 1
Run Code Online (Sandbox Code Playgroud)
这种方法还有一个优点,就是只需要读取输入到第一个换行符(加上缓冲)。
归档时间: |
|
查看次数: |
901 次 |
最近记录: |