从Windows粘贴到linux的内容行尾会有东西?

将Windows中该文件的内容粘贴复制到linux文件中,用perl读取并保存到哈希中,然后读取另一文件的第一行,判断他第一列的内容是否在上一个文件中存在,结果总是不存在,然而明明就在啊,怎么会不存在呢,一遍遍检查代码也找不到问题。到底为什么呢?

在写代码时,经常会遇到一些奇怪的情况,例如有下面的文件

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

  • 发表于 2018-07-13 15:14
  • 阅读 ( 1741 )
  • 分类:perl

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
安生水
安生水

350 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 350 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 76 文章
  8. CORNERSTONE 72 文章