Jak číst dva soubory řádek po řádku

1085__130x130_linux-terminalV dnešním příspěvku budeme pokračovat v sérii článků, věnovaných příkazovému řádku. Představíme si několik metod, jejichž pomocí lze číst dva soubory střídavě řádek po řádku, což znamená, že se bude číst řádek č.1 ze souboru 1, poté řádek č.1 ze souboru 2, následně řádek č.2 ze souboru 1, pak řádek č.2 ze souboru 2 a tak dále. Tento způsob čtení vytvoří kombinovaný výstup ze souborů, ve kterém budou vypsány střídavě řádky z více souborů.

 

 

Pojďme tedy použít následující dva soubory jako příklad:

Soubor 1:

Linux
Mint
CZ&SK

 

Soubor 2:

Debian
Ubuntu
Arch

 

1. Příkaz paste

Nejjednodušší variantou pro čtení dvou souborů současně je použití příkazu paste:

Příkaz terminálu:
paste -d"\n" soubor1 soubor2

 

dss1

 

2. Příkaz awk

Druhou možností je použití příkazu awk, kdy vzorový příkaz bude vypadat takto:

Příkaz terminálu:
awk '1;{getline < x;}1' x="soubor2" soubor1

 

dss2

 

V tomto příkazu je proměnná „x“ určena pro druhý soubor „soubor2“. „1“ v příkazu vytiskne řádky souboru1. „getline“ čte obsah souboru2 a vytiskne první řádek. Při použití této metody, jsou řádky obou souborů vytištěny střídavě.

 

3. Příkazy paste a awk

Třetí možností je použití příkazů paste a awk současně:

Příkaz terminálu:
paste soubor1 soubor2 | awk '$1=$1' OFS='\n'

 

dss3

 

No řekněte sami, není příkazový řádek kouzelný?

 

Štítky , , , , .Záložka pro permanentní odkaz.

2 reakce na Jak číst dva soubory řádek po řádku

  1. Allconius říká:

    jo je 😀 Nevíš jak funguje ten prohlížeč vi ? třeba „vi soubor.txt“ se otevře můžu ho editovat, ale nevím jak uložit a zavřít abych se dostal zprátky do terminálu. Sem to nějak nevygooooglil 🙂

    • Duna říká:

      😡 = ukoncit a ulozit zmeny
      :q = ukoncit
      :q! = ukoncit a neukladat zmeny