GNU/Linux >> Znalost Linux >  >> Linux

Tisknout dva soubory ve dvou sloupcích?

Chci vytisknout dva soubory ve dvou sloupcích – první soubor na levé straně a druhý na pravé straně.

paste nepracuje, protože může vložit pouze znak jako oddělovač, takže pokud mají řádky prvního souboru jinou délku, výstup bude zkroucený:

$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line   hello
line    world

Pokud to byl příkaz k přidání koncových mezer jako fmt --add-spaces --width 50 problém by byl vyřešen:

$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line                                 hello
line                                              world

Ale neznám jednoduchý způsob, jak to udělat.

Jak tedy sloučit a vytisknout několik souborů vodorovně bez kroucení? Vlastně se na ně chci jen podívat současně.

UPD: příkaz pro přidání koncových mezer existuje (například xargs -d 'n' printf '%-50sn' )

Ale řešení jako

$ paste <(add-trailing-spaces file1) file2

nefunguje podle očekávání, když soubor1 má méně řádků než soubor2.

Přijatá odpověď:

A co paste file{1,2}| column -s $'t' -tn ?

looooooooong line line  hello
line                    world
  • Toto je vypovídající column použijte Tab jako oddělovač sloupců tam, kde jej přebíráme z paste příkaz, který je tam výchozím oddělovačem, pokud není zadán; obecně:

    paste -d'X' file{1,2}| column -s $'X' -tn

    kde X znamená jakýkoli jednotlivý znak. Musíte vybrat ten, který udělil, že se nebude ve vašich souborech vyskytovat.

  • -t volba se používá k určení počtu sloupců, které vstup obsahuje.

  • Toto nepřidá dlouhý tabulátor mezi dva soubory, zatímco ostatní odpovědi ano.
  • toto bude fungovat, i když byl prázdný řádek(y) v souboru 1 a nevytiskne se druhý soubor v tiskové oblasti souboru 1 , viz vstup/výstup níže

    Vstupní soubor1:

    looooooooong line
    
    line
    

    Vstupní soubor2:

    hello
    world
    

    Výstup:

    looooooooong line  hello
                       world
    line
    

Linux
  1. Porovnat dva sloupce různých souborů a vytisknout, pokud se shodují?

  2. Tisknout všechny soubory ve složce?

  3. Společné řádky mezi dvěma soubory?

  1. Kartézský součin dvou souborů (jako sady řádků) v GNU/Linux

  2. Převod pěkného tisku JSON na jeden řádek

  3. Jak spojit dva soubory CSV?

  1. 5 nástrojů příkazového řádku pro rychlé vyhledání souborů v systému Linux

  2. Lum – sloučení sloupců ze dvou samostatných souborů?

  3. Jak porovnat pouze první řádek dvou souborů?