Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Script pro převod řádků na sloupce  (Přečteno 1329 krát)

martin.nohejl

  • Aktivní člen
  • *
  • Příspěvků: 173
Script pro převod řádků na sloupce
« kdy: 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
Hlavní PC: Intel Core i5 2500 3,30GHz Sandy Bridge, MB Gigabyte H61M, DIMM DDR3 8GB 1333MHz, 1TB SATA (2 oddíly / 200GB, /home 800GB), Ubuntu 14.04CZ 32bit
Záložní PC: AMD Athlon(TM)XP 1700+, 512 MB RAM, NVIDIA GeForce4 MX 4000, disk 72GB IDE, Ubuntu 10.10CZ 32 bit

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Script pro převod řádků na sloupce
« Odpověď #1 kdy: 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.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Script pro převod řádků na sloupce
« Odpověď #2 kdy: 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

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Script pro převod řádků na sloupce
« Odpověď #3 kdy: 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
« Poslední změna: 10 Března 2013, 20:28:21 od GdH »

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Script pro převod řádků na sloupce
« Odpověď #4 kdy: 10 Března 2013, 21:19:18 »
Aha, on to chce do jednoho sloupce. Nechal jsem se zmást nadpisem.

 

Provoz zaštiťuje spolek OpenAlt.