粘贴没有分隔符的文件


8

如何在没有任何分隔符的情况下垂直连接两个文件?我试图使用paste -d"" a b,但这只是给我a

样本文件:

000    0   0   0
0001000200030004
  10  20  30  40
    2000    4000
            .123
            12.1
1234234534564567

1
您确定这是您得到的吗?paste - d"" a b将粘贴内容stdin,命名的文件d""ab
cuonglm

@cuonglm错字...已修复。
Tomas Greif 2015年

您离开了一个字符:paste -d "" a b
G-Man说'Resstate Monica''Sep

Answers:


14

paste使用\0的空白分界符如通过POSIX定义的

paste -d'\0' file1 file2

使用-d"" a b是一样的-d a b:该paste程序将看到三个参数-da并且b,这使得a定界符b的唯一文件粘贴的名称。

如果您使用的是GNU系统(非嵌入式Linux,Cygwin等),则可以使用:

paste -d "" file1 file2

-d ""POSIX未指定该表单,并且可能在其他平台上产生错误。至少BSD和传家宝paste不会报告任何定界符错误。


3
尝试从所谓的“传家宝”工具的行为中获取某些东西时要小心。paste该套件中的Bourne Shell是由Gunnar Ritter编写的,与UNIX来源无关。该套件中的Bourne Shell派生自OpenSolaris Bourne Shell,但由于快速而hacky移植到Linux中的缺陷而导致的错误(例如,不兼容的wait()实现),请检查(exec ps)以确认原始文件中不存在且我的便携式Bourne Shell中不存在的挂起。
schily

顺便说一句:在〜2010年4月之前在Solaris上进行粘贴操作时会出现“没有定界符”错误,paste -d '' file1 file2但此后,粘贴操作是从戴维·科恩(David Korn)获得的粘贴实现,并且允许使用-d“”。
schily

@schily:“派生”是什么意思?我提到传家宝paste是因为我有传家宝并且可以对其进行测试,因此我不会将其用于“标准”或其他任何用途。
cuonglm

@schily:我也用Solaris 11进行了测试,它paste没有给出定界符错误paste -d ""
cuonglm

许多人认为品牌“传家宝”的工具来自原始UNIX来源,但传家宝贴不是。
schily 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.