在写代码时,经常会遇到一些奇怪的情况,例如有下面的文件
chr01
chr02
chr03
chr04
chr05
chr06
chr07
将Windows中该文件的内容粘贴复制到linux文件中,用perl读取并保存到哈希中,然后读取另一文件(如下)的第一行,判断他第一列的内容是否在上一个文件中存在,结果总是不存在,然而明明就在啊,怎么会不存在呢,一遍遍检查代码也找不到问题。到底为什么呢?
chr01 1 00 ... ...
chr02 1 00 ... ...
后来经过排查发现是第一个输入的文件有问题,由于是从Windows中粘贴过来的,所以末尾的换行符可能与Linux中不太相同,函数chomp()并不能将其去掉,所以两个chr01就不相同了。其中具体原因并不清楚,但是可以有间接的解决方案(最根本的解决方法等以后清楚后再来更新。),就是在输入文件的最后加一列,如:
chr01 1
chr02 1
chr03 1
chr04 1
chr05 1
chr06 1
chr07 1
然后使用cut命令将最后一列切掉,这样我们就不会在遇到最后的特殊符号了。
cut -f 1 chr.txt > chr_1.txt
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!