合并文件行以查找行错误

时间:2015-08-27 18:35:23

标签: unix paste

我有两个长度相同的文件,我希望每行合并一行。以下是我的文件:

FileA.txt

DM  CM127861    chr14   103390285   +   NM_030943   AMN Megaloblasticanaemia1   
DM  CM118934    chr14   103395855   +   NM_030943   AMN Megaloblasticanaemia1   
DM  CM127864    chr14   103395992   +   NM_030943   AMN Megaloblasticanaemia1   
DM  CM088131    chr14   103395814   +   NM_030943   AMN Megaloblasticanaemia1   
DM  CM124403    chr14   103395776   +   NM_030943   AMN Imerslund-Gr‰sbecksyndrome
DM  CM002932    chr1    115220593   -   NM_000036   AMPD1   Adenosinemonophosphatedeaminasedeficiency
    etc

FileB.txt

TGT    C    TAT    Y
ATG    M    AAG    K
CAG    Q    GAG    E
CCG    P    TCG    S
CCG    P    CTG    L
GCG    A    GTG    V

我希望我的最终输出为:

DM  CM127861    chr14   103390285   +   NM_030943   AMN Megaloblasticanaemia1    TGT    C   TAT    Y
etc

为此,我一直在使用此粘贴命令:paste -d '\t' FileA.txt FileB.txt > combined.txt但是,我一直收到此错误Error reading FileA.txt。我很确定它与我的%标志有关。我试图将我文件中的所有%更改为另一个角色,但后来遇到了另一个无法处理的角色。我很确定它会在整个文件中遇到这些错误,因为它有一些不寻常的字符。当存在一些不寻常的字符时,还有其他方法可以合并文件行吗?

以下两个文件的ls -l:

-rw-r--r--@ 1 christy staff 4811597 Aug 27 14:18 Translated.txt

-rw-r--r-- 1 christy staff 846004 Aug 27 14:18 Translated2.txt

1 个答案:

答案 0 :(得分:1)

有些东西你没有告诉我们。例如,这没有问题:

$ paste FileA.txt FileB.txt
Syndrome    ATG Y
Syndrome%    AGT        K

如果您收到“读取FileA.txt错误”,则表明该文件可能不存在或您没有读取权限。什么

ls -l *.txt

说什么?您是不是偶然发现Unix在文件名中的区分大小写?

编辑:可能与扩展属性有关。您可以使用

列出它们
$ xattr -l FileA.txt

$ ls -l@ *.txt

由于你的文件中的“有趣”字符,从医生的名字来看,应该像Imerslund-Gräsbeck一样,它可能与编码有关。如果ls -l@显示出com.apple.TextEncoding之类的内容,请尝试使用

删除该属性
$ xattr -d com.apple.TextEncoding FileA.txt

如果显示其他属性,例如com.apple.quarantine,也可以删除它们。