Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: martin.nohejl 10 Března 2013, 17:10:39

Název: Script pro převod řádků na sloupce
Přispěvatel: martin.nohejl 10 Března 2013, 17:10:39
Zdravím všechny,
mám v txt souborech slova v několika řádcích, v každém řádku je několik slov oddělených mezerami. Potřeboval bych jednoduchý script pro bash, který mi převede tyto slova do jednoho sloupce nového texťáku.

Dále bych ještě potřeboval jednoduchý script pro spojení dvou txt souborů.

Předem děkuji
Název: Re:Script pro převod řádků na sloupce
Přispěvatel: GdH 10 Března 2013, 17:33:27
Pokud jsem správně pochopil zadání, tak třeba takto:

Kód: [Vybrat]
sed 's/ \+\|\t\+/\n/g' vstupní_soubor > výstupní_soubor
Nahrazuje libovolný počet mezer, nebo tabulátorů novým řádkem.
Název: Re:Script pro převod řádků na sloupce
Přispěvatel: pacholik 10 Března 2013, 19:04:59
No jestli je tam těch řádků víc tak v pythonu
Kód: [Vybrat]
#!/usr/bin/python

import sys

l = []
for i in open(sys.argv[1]):
l.append(i.split())
for i in zip(*l):
print(" ".join(i))

Spojení dvou souborů
Kód: [Vybrat]
cat soubor1 soubor2 > výsledekpopř. vedle sebe
Kód: [Vybrat]
paste soubor1 soubor2 > výsledek
@GdH: regex pro white-space je \s
Název: Re:Script pro převod řádků na sloupce
Přispěvatel: GdH 10 Března 2013, 19:29:51
@GdH: regex pro white-space je \s

Jo, slyšel jsem o něm :)

Faktem je, že jsem vypustil druhou část zadání, ale sedu se dá předhodit víc souborů najednou a vyplivne je do jednoho. V použití Pythonu tu nevidím výhodu, ten tvůj ani nefunguje. Proč vyrábět další seznam, když to stačí sypat na výstup rovnou...

Toto žere i víc souborů na vstupu:

Kód: [Vybrat]
#!/usr/bin/python
import sys

for file in sys.argv[1:]:
  with open(file) as f:
    for i in f:
      for j in i.split():
        print j
Název: Re:Script pro převod řádků na sloupce
Přispěvatel: pacholik 10 Března 2013, 21:19:18
Aha, on to chce do jednoho sloupce. Nechal jsem se zmást nadpisem.