linux的文件编码问题--为什么grep不到我想要的内容

在Linux环境下遇到一个文件编码问题,grep命令无法过滤出预期内容。经过一系列尝试,发现是文件编码不同(UTF-8 BOM与ASCII)导致的问题。了解文件编码并使用`file`和`enca`命令检查后,确认了问题所在:在ASCII编码中,以'a'开头的行在UTF-8 BOM编码中并不相同。记录此问题以供将来参考。
摘要由CSDN通过智能技术生成

今天遇到一个在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'

你猜结果怎么样,这就没问题了!!!证明过滤命令是没有错的。

那是什么原因??一样的命令,却出现不一样的结果。说到这里,想你也能猜到了吧,文件编码不一样导致的结果!!

来让我们看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值