colar arquivos sem delimitador

8

Como uno dois arquivos verticalmente sem nenhum separador? Eu tentei usar paste -d"" a b, mas isso só me dá a.

Arquivo de exemplo:

000    0   0   0
0001000200030004
  10  20  30  40
    2000    4000
            .123
            12.1
1234234534564567
Tomas Greif
fonte
1
Você tem certeza disso? paste - d"" a birá colar o conteúdo de stdin, arquivo chamado d"", a, b.
cuonglm
@cuonglm typo ... corrigido.
Tomas Greif
Você estava fora por um caractere: paste -d "" a b.
G-Man diz 'Reinstate Monica'

Respostas:

14

pasteuse \0para delimitador nulo, conforme definido pelo POSIX :

paste -d'\0' file1 file2

Usando -d"" a bé o mesmo que -d a b: o pasteprograma vê três argumentos -d, ae b, o que torna ao delimitador e bo nome do único arquivo para colar.

Se você estiver em um sistema GNU (Linux não incorporado, Cygwin,…), poderá usar:

paste -d "" file1 file2

O formulário -d ""não é especificado pelo POSIX e pode gerar erros em outras plataformas. Pelo menos o BSD e a herança pastenão reportarão erros de delimitadores .

cuonglm
fonte
3
Tenha cuidado ao tentar extrair algo do comportamento das ferramentas chamadas "herança". pasteO pacote Bourne Shell foi derivado do OpenSolaris Bourne Shell, mas possui seus próprios erros como resultado de uma porta rápida e hacky para os déficits no Linux ( por exemplo, uma implementação incompatível de wait ()), verifique (exec ps)se há um travamento que não está presente no original e que não está presente no meu Bourne Shell portátil.
schily
Entre: colar no Solaris antes de ~ abril de 2010 gera um erro "sem delimitador" paste -d '' file1 file2mas, desde então, colar é a implementação de pasta retirada de David Korn e isso permite -d "".
schily
@schily: O que você quer dizer com "derivar"? Mencionei a herança pasteporque a possuía e posso testar com ela, não a uso para "padrão" ou qualquer outra coisa.
precisa saber é o seguinte
@schily: E também testei com o Solaris 11, nãopaste deu erro para delimitadorespaste -d "" também.
precisa saber é
Muitas pessoas acreditam que as ferramentas da marca "herança" são de fontes originais do UNIX, mas a pasta da herança não é.
schily
3

A solução é:

paste -d "\0" a b
Tomas Greif
fonte