对于DOS行尾CR LF格式的文本文件, sed和grep在不同版本中都不能很好地处理
file file
============
file: ASCII text, with CRLF line terminators
cat file
============
asdf
xyz
GNU sed 3.02
sed -n '/^asdf$/p' file
没有任何输出.
/^asdf\x0d$/, /^asdf\015$/, /^asdf\r/ 都不行
但/^asdf.$/ 却可以, 这就等于说, sed知道这有一个字符, 但你无法以确定的办法表示它.
同样的文件, 在cygwin的GNU sed 4.1.3中却可以正确处理.
对于grep, 在 GNU grep 2.5.1(redhat 8.0, 9.0, cygwin)中,
grep -x 'asdf' file
都不能显示, 跟sed一样, 'asdf.' 行, 但其它形式都不行.
对于grep, 由于它用的比sed 广泛, 所以这一问题的危害也大.
阅读(1708) | 评论(0) | 转发(0) |