Bash-skriptaus yhdistämään kaksi logi

Eli tarkoitus on yhdistää päivä-kohtainen logi kuukausi-kohtaiseen, tavalla että vain ne rivit jotka eivät vielä ole lisätty kuukausi-logiin lisättäisiin.

Logit normaaleja teksti tiedostoja.

Minulla on semmoinen kutka ettei tähän kummoistakaan komento-putkea tarvita, mutta ei se nyt näytä ihan kädenkäänteessäkään onnistuvan.
Ilmianna
Jaa

10 Vastausta



Lisätään vielä täsmennystä.

Kuukausi logissa ei voi olla kahta samanlaista riviä, jokainen rivi on siis unikki. Päivittäin kertyvässä logissa taas voi kaikki rivit olla semmoisia jotka jo ovat kuukausi logissa, ja silloin niitä ei enään saisi lisätä.

Pika-apu olis nyt hienoo.
Ilmianna
Jaa
Yhdistä, sorttaa ja poista duplikaatit.
Ilmianna
Jaa

Tästä on poistettu viesti sääntöjen vastaisena.

Ilmianna
Jaa
Tässä PHP -koodina, jossa Plogi = Liitettävä logi, ja Klogi = Koostelogi.

http://pastebin.com/MbCCD037

Näyttää yläpito poistavan näitä vastauksia, tuossa ylempänä tästä ensimäinen versio jonka poistivat. Mikähän niillä mättää, joku torvelo hommissa vissiin. Kuvakaappaus varmuudeksi tästä ylös.

Linux Mint 18.1 Serena
Xfce 64-bit
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
No ylläpito ymmärtää ohjelmoinnista suunnilleen yhtä paljon, kuin lehmä levytmaidosta. Ja sitten poistellaan kaikki sellainen, joka on oman ymmärryskyvyn ulkopuolella. Modella on jonkinnäköinen krooninen hiekkapimppisyys:)
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Lisätäänkö ne aina kerran päivässä esimerkiksi seuraavana päivänä? Silloinhan voisi tehdä esim:

cat päivälokit* >> kaikkilokit

Deletoi vaan sitten joka kerran ensin pois sen kaikki sisältävät tiedoston, tai vaihtaa nimeä. Tai

cat eilinenloki >> kaikkilokit

jolloin lisätään vaan yksi tiedosto isomman perään.
Ilmianna
Jaa
lisää vaan kaikki rivit ja sitten uniq-komennolla poistat duplikaatit.
cat testi.txt |uniq >testi2.txt

testi.txt:
---
abc
abc
§12
§12
§12
123
456
abc
---
Kommentoi
Ilmianna
Jaa
3 VASTAUSTA:
niin ja tosta unohtui välistä sort, eli:
|sort|uniq
Kommentoi
Ilmianna
Jaa
sdfsdfdsf kirjoitti:
niin ja tosta unohtui välistä sort, eli:
|sort|uniq
Tämä aika lähellä.

testi2.txt sisältöä ei saisi aakkostaa, eli rivien järjestys tulisi säilyä, lisäys järjestyksessä.

Vain testi.txt tidoston rivit joita ei vielä ole testi2.txt tiedostossa, lisätään, järjestystä muuttamatta.

Tuo PHP näytäs tekevän sen just oikein, pitää vielä hioa tuon "fadsfdsfsdf" komentorivi putkee, niin ei tarvittas PHP tulkkkia kuvioihin.
Kommentoi
Ilmianna
Jaa
Mä en keksinyt miten ilman sorttaamista onnistuis.
Mutta perlillä onnistuu ja se kai on asennettuna?
http://unix.stackexchange.com/questions/11939/how-to-get-only-the-unique-results-without-having-to-sort-data

Ja tossa ketjussa mainittiin, että uniq:n sijaan unique:lla vois onnistua?
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Jokos tämä kelpaisi.

- Ensimmäinen rivi yhdistää logit temp.txt sisällöksi.
- Toinen rivi poistaa samat, ja tallentaa Klogi.txt tiedostoon
- Kolmas rivi, poistaa suorituksessa käytetyn temp.txt tiedoston.

cat Plogi.txt Klogi.txt > temp.txt
awk '!seen[$0]++' temp.txt > Klogi.txt
rm temp.txt

Huomaa että lisäys tulee Klogin alkuun, jos haluat lisäyksen Klogin loppuun vaihda ensimmäinen rivi näin:

cat Klogi.txt Plogi.txt > temp.txt

Linux Mint 18.1 Serena
Xfce 64-bit
Ilmianna
Jaa

Vastaa alkuperäiseen viestiin

Bash-skriptaus yhdistämään kaksi logi

Eli tarkoitus on yhdistää päivä-kohtainen logi kuukausi-kohtaiseen, tavalla että vain ne rivit jotka eivät vielä ole lisätty kuukausi-logiin lisättäisiin.

Logit normaaleja teksti tiedostoja.

Minulla on semmoinen kutka ettei tähän kummoistakaan komento-putkea tarvita, mutta ei se nyt näytä ihan kädenkäänteessäkään onnistuvan.

5000 merkkiä jäljellä

Peruuta