pegar archivos sin delimitador

8

¿Cómo unir dos archivos verticalmente sin ningún separador? Traté de usar paste -d"" a b, pero esto solo me da a.

Archivo de muestra:

000    0   0   0
0001000200030004
  10  20  30  40
    2000    4000
            .123
            12.1
1234234534564567
Tomás Greif
fuente
1
¿Estás seguro de que esto es lo que obtienes? paste - d"" a bpegará el contenido de stdin, archivo llamado d"", a, b.
Cuonglm
Error tipográfico @cuonglm ... arreglado.
Tomas Greif
Usted estaba fuera por un personaje: paste -d "" a b.
G-Man dice 'reinstalar a Monica' el

Respuestas:

14

pasteutilizar \0para delimitador nulo según lo definido por POSIX :

paste -d'\0' file1 file2

El uso -d"" a bes el mismo que -d a b: el pasteprograma ve a tres argumentos -d, ay b, lo que hace que ael delimitador y bel nombre del único archivo a pegar.

Si está en un sistema GNU (Linux no incorporado, Cygwin, ...), puede usar:

paste -d "" file1 file2

-d ""POSIX no especifica el formulario y puede producir errores en otras plataformas. Al menos BSD y reliquia pasteinformarán que no hay errores delimitadores .

Cuonglm
fuente
3
Tenga cuidado al tratar de derivar algo del comportamiento de las llamadas herramientas "reliquia". pastede este conjunto fue escrito por Gunnar Ritter y no está relacionado con las fuentes de UNIX. El Bourne Shell de ese conjunto se derivó del OpenSolaris Bourne Shell, pero tiene sus propios errores como resultado de un puerto rápido y malicioso a los déficits en Linux ( por ejemplo, una implementación de wait () incompatible), verifique (exec ps)para verificar un bloqueo que no está presente en el original y que no está presente en mi Bourne Shell portátil.
schily
Por cierto: pegar en Solaris antes de ~ abril de 2010 da un error "sin delimitador", paste -d '' file1 file2pero desde entonces, pegar es la implementación de pegar tomada de David Korn y esto permite -d "".
schily
@schily: ¿Qué quieres decir con "derivar"? Menciono la herencia pasteporque la tenía y puedo probarla, no la uso para "estándar" ni para nada más.
Cuonglm
@schily: Y también lo he probado con Solaris 11, tampoco hapaste dado ningún error delimitadorpaste -d "" .
Cuonglm
Muchas personas creen que las herramientas con la marca "reliquia" son de fuentes originales de UNIX, pero la pasta de reliquia no lo es.
schily
3

La solucion es:

paste -d "\0" a b
Tomás Greif
fuente