Sloučení řádků z více souborů

Husqvik

Sloučení řádků z více souborů
« kdy: 09. 05. 2013, 09:07:30 »
Ahoj,
potreboval bych radu ohledne slouceni dat z vice souboru. Mam udelany skript, ktery kazdou hodinu pomoci SNMP sesbira udaje ze zarizeni (teplotu) a ulozi to do souboru. Struktura vysledneho souboru je nasledujici:

Kód: [Vybrat]
Zarizeni_1 38
Zarizeni_2 39
Zarizeni_3 45

A ted bych potreboval jak tyto sesbirane hodnoty za jeden den nasypat do jednoho souboru. Aby byl vysledek tento:
Kód: [Vybrat]
Zarizeni_1 38 37 38 39.....
Zarizeni_2 39 41 38 46.....
Zarizeni_3 45 44 49 46....

Zkousel jsem prikaz join, ale ten umi jenom sloucit jen dva soubory. Resp. nepodarilo se mi ho presvedcit fungovat spravne - ve vyslednem souboru jsem mel vzdy jenom dve hodnoty (z prvniho a posledniho souboru). Nenakopnul by me nekdo spravnym smerem - idealne v awk, v tom se neco malo (spis hodne malo :P) orientuju.

Diky moc.

Husqvik
« Poslední změna: 09. 05. 2013, 11:09:41 od Petr Krčmář »


alfi

  • ****
  • 338
    • Zobrazit profil
    • E-mail
Re:Slouceni radku z vice souboru do jednoho
« Odpověď #1 kdy: 09. 05. 2013, 09:26:17 »
zkusil bych awk, ala tady http://stackoverflow.com/questions/5467690/how-to-merge-two-files-using-awk
otázka je, jak funguje těch víc hodinových(?) souborů - jestli vždy existují nebo některý soubor/řádek v něm může chybět. pokud vždy všechny existují, stačí všechny napřed ve správném pořadí sloučit do jednoho :-)

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #2 kdy: 09. 05. 2013, 09:31:55 »
Jak říká Alfi - pokud mají soubory pevný formát, kterému se dá věřit, pak prvně ze všech extrahovat ten druhý sloupec a sloučit třeba pomocí http://linux.die.net/man/1/paste

Pokud ne, tak se nějakému tomu pythonu, perlu apod. nevyhneš. Bude to strašlivá námaha tak na deset řádků :)

j

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #3 kdy: 09. 05. 2013, 10:01:01 »
Jop, a pokud si to chces do budoucna vylepsit, tak to laduj do databaze.

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #4 kdy: 09. 05. 2013, 10:02:21 »
Jop, a pokud si to chces do budoucna vylepsit, tak to laduj do databaze.
Ovšem fklaudu!


Jim

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #5 kdy: 09. 05. 2013, 10:50:48 »
Primluvil bych se za db rovnou, je to napsane hned a lepe se s tim pracuje.

Husqvik

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #6 kdy: 09. 05. 2013, 11:03:16 »
Dekuji vsem za tipy. Databazi vylucuju, zadnou tam nemam a vzhledem k tomu, ze to potrebuju jenom docasne, tak je to zbytecne.
Zkusim to AWK a uvidime - snad z toho neco dostanu :-)

Jeste jedno diky.

Husqvik

Rejpal

Re:Sloučení řádků z více souborů
« Odpověď #7 kdy: 09. 05. 2013, 12:31:52 »
"... Databazi vylucuju, zadnou tam nemam..."

Operační systém, který zná awk a neobsahuje ani jedinou databázi - to existuje?

Jirka Chmiel

Re:Sloučení řádků z více souborů
« Odpověď #8 kdy: 09. 05. 2013, 12:43:58 »
Je to sice trochu divoké, ale co takhle:

Kód: [Vybrat]
eval "cat `ls -xrt *.txt | sed 's/  / | join - /g'`"
Předpokláda to, že soubory mají příponu txt a teploty se řadí podle času.

j

Re:Slouceni radku z vice souboru do jednoho
« Odpověď #9 kdy: 09. 05. 2013, 15:28:17 »
Dekuji vsem za tipy. Databazi vylucuju, zadnou tam nemam a vzhledem k tomu, ze to potrebuju jenom docasne, tak je to zbytecne.
Zkusim to AWK a uvidime - snad z toho neco dostanu :-)

Jeste jedno diky.

Husqvik

Mno ... ne ze by to nebylo mozny, ale dovolim si tvrdit, ze tam na 99,9999% databazi mas. Rek bych, ze SQLite urcite.

kubbing

Re:Sloučení řádků z více souborů
« Odpověď #10 kdy: 09. 05. 2013, 17:35:36 »
co treba:
Kód: [Vybrat]
#!/usr/bin/env ruby

hash = Hash.new { |hash, key| hash[key] = Array.new; }

while line = gets
split = line.split(' ')
key = split[0]
val = split[1]
hash[key] << val
end

hash.each_key do |key|
puts key + ' ' + hash[key].join(' ')
end
a pouziti:
Kód: [Vybrat]
$ cat *.txt | ./script.rb

minimir

Re:Sloučení řádků z více souborů
« Odpověď #11 kdy: 09. 05. 2013, 18:39:33 »
Nebylo by lepší upravit ten skript, který ti ty soubory generuje?

aaa158

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Sloučení řádků z více souborů
« Odpověď #12 kdy: 09. 05. 2013, 22:10:57 »
rrdtool

slonik

Re:Sloučení řádků z více souborů
« Odpověď #13 kdy: 10. 05. 2013, 00:39:23 »
na root.cz nikto nepouziva shell? to su mi veci...

Kód: [Vybrat]
cut -d ' ' -f 2 t2.txt  | paste t1.txt  -

Re:Sloučení řádků z více souborů
« Odpověď #14 kdy: 10. 05. 2013, 00:48:21 »
na root.cz nikto nepouziva shell? to su mi veci...
Spíš sis nepřečetl předchozí odpovědi, ne?