Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 为行合并文件行错误_Unix_Paste - Fatal编程技术网

Unix 为行合并文件行错误

Unix 为行合并文件行错误,unix,paste,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_03

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

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
,但是,我不断地收到这个错误
读取FileA.txt时出错。我很确定这与我的
%
符号有关。我试图将文件中的所有%更改为另一个字符,但它遇到了另一个无法处理的字符。我很确定它会在我的整个文件中不断遇到这些错误,因为它有一些不寻常的字符。当出现一些不寻常的字符时,是否有其他方法逐行合并文件

ls-l用于以下两个文件:

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


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

有些事你没有告诉我们。例如,这样做没有问题:

$ paste FileA.txt FileB.txt
Syndrome    ATG Y
Syndrome%    AGT        K
如果您得到一个“读取FileA.txt时出错”,则更多地表明该文件可能不存在或您没有读取权限。什么是

ls -l *.txt
说什么?您是否碰巧不知道Unix在文件名中区分大小写

编辑:可能与扩展属性相关。你可以把它们列在一起

$ xattr -l FileA.txt

由于根据医生的姓名判断,文件中的“有趣”字符应该是a-umlaut,如Imerslund Gräsbeck中所述,因此可能与编码有关。如果
ls-l@
显示类似
com.apple.textcodencing
的内容,请尝试使用删除该属性

$ xattr -d com.apple.TextEncoding FileA.txt

如果出现其他属性,如
com.apple.quantial
,请同时删除它们。

我无法根据问题中包含的数据复制您遇到的问题,因此。。。这里有一个基于awk的选项,可以替代
粘贴

awk '{getline B < "fileB.txt"; print $0 "\t" B;}' fileA.txt > combined.txt

因为它不需要将所有一个文件加载到内存中。当然,如果您有足够的内存,一次读取一个文件可能比逐行读取每个文件运行得更快。如果成功,结果应该是相同的。

您能尝试查找更多信息吗<代码>ls-l
如@Jens所建议
cat FileA.txt FileB.txt
查看问题是否是特定于粘贴的,
paste-d'\t'FileB.txt FileB.txt
查看问题是否是特定于FileA.txt的。@WalterA我用
ls-l
更新了我的帖子,
cat
工作正常。当我在复制的文件上尝试你的命令时,我没有看到错误,粘贴成功。您的问题中是否有可能包含足够的原材料,以使问题得以复制?可能Translated.txt较短或具有一些非常特殊的字符。使用较小子集的调试的
wc-l Translated*.txt
检查长度:
head-10 Translated.txt>a;head-10 Translated2.txt>b;粘贴-d'\t'a b
。当这起作用时,尝试更多行(1005003000),直到您知道问题出在哪里:
while[1];一定要读nr_行;head-${nr_lines}Translated.txt>a;head-${nr_lines}Translated2.txt>b;粘贴-d'\t'a b|tail-5;完成
这是在配备IOS的Apple上完成的吗?文件名绝对不区分大小写,因为它将输出文件,最多可输出指定字符,但随后将停止合并。当我删除我认为导致问题的字符时,它会合并更多的行,直到它碰到另一个导致问题的字符。我的文件有点复杂,所以我没有发布我文件的精确摘录,但也许我应该这么做。我已经用我的博客上的一个确切例子更新了我的帖子file@christylynn002ls输出中的
@
是什么意思?
manls
描述了它的解释吗?@christylynn002我做了一些研究;
@
表示可使用
ls-le*.txt
列出的扩展属性。另一个猜测是:您的磁盘空间是否用完了?这一操作非常有效。我不知道为什么我不能让浆糊起作用。谢谢你。现在我没有陷入困境:)
awk '{getline B < "fileB.txt"; print $0 "\t" B;}' fileA.txt > combined.txt
awk 'NR==FNR{a[NR]=$0;next;} {print $0 "\t" a[FNR];}' fileB.txt fileA.txt