今天遇到一个在linux环境下的文件编码问题,搞了好久才搞明白。
先说说背景:
有一个这样的文件,文件test.txt内容如下:
abcdefghijklmnopqrst
hfjkdafldsfkfjkaddjfka
然后我想过滤出以a开头的文件内容,命令如下:
cat test.txt|egrep '^a'
一看这命令没啥毛病,是可以过滤出第一行的内容来。然而,过滤结果却没有出现我预期的效果。不能够啊,这命令我用了N多年了,难道我记错了???于是乎我各种百度,各种尝试,把命令换成如下:
egrep '^a' test.txt
结果呢,呵呵。一样不管用啊。what the ***!百思不得其解啊。接着又是各种尝试。
echo abcdefghijklmnopqrst | egrep '^a'
哎呦喂,这样就可以过滤出来了,耍我呢。
再接着试:
echo abcdefghijklmnopqrst > test2.txt
cat test2.txt | egrep '^a'
你猜结果怎么样,这就没问题了!!!证明过滤命令是没有错的。
那是什么原因??一样的命令,却出现不一样的结果。说到这里,想你也能猜到了吧,文件编码不一样导致的结果!!
来让我们看看