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.
102016
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

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.

Äänestä

Yhdistä, sorttaa ja poista duplikaatit.

Äänestä

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

Äänestä
  • 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:)

    Äänestä

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.

Äänestä

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
---

Äänestä
  • niin ja tosta unohtui välistä sort, eli:
    |sort|uniq

    Äänestä

  • 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.

    Äänestä


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

Äänestä

Ketjusta on poistettu 1 sääntöjenvastainen viesti.

Kommentoi aloitusta


Logittaja kirjoitti:

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.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu