grep temppu?

Kolmisarakkeinen pitkä taulukko on kopioitu veppisivulta, mutta erottimeksi tullut rivinvaihto CR eli (\r) joka solun väliin!
Sen palauttamiseksi alkuperäiseen muotoon kolmen ryhmän kaksi ensimmäistä CRää (\r) pitäisi vaihtaa TABeiksi(\t) ja kolmas jättää silleen.
Miten tuo tehdään grep komennoilla? Siis muodosta
A1
B1
C1
A2
B2
C2
jne
alkuperäiseen muotoon:
A1 B1 C1
A2 B2 C2
jne

On päässyt tempputaidot ruostumaan ;-(

Selaimen vanha versio kopioi tuon oikein, mutta uusi ei enää!!!
3918
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Jos sul sattuu olee python käytettävissä niin tämmösellä pitäs vääntyä:

lines = open('asdasd.txt').read().split('\n')
print ''.join(['%s\t%s\t%s\n' % tuple(lines[i:i+3]) for i in xrange(0, len(lines), 3)])

Äänestä
  • Taulukon alussa on otsikkotietoa, johon tuo kuvio ei sovi, joten skripti ei toimi koko tiedostolle, mutta editorilla voi helposti aloittaa halutulta riviltä. Mulla on siis editori, jonka Etsi/korvaa -kenttiin kelpaa myös grep-lausekkeet.
    Eikös niillä voisi määritellä tuollaista kolmen ryhmää, jossa etsitään:
    (*\r *\r *\r)
    joka korvataan:
    (1\t 2\t 3\r)

    Jotain tuon tapaista?

    Tuon tempun tarve tulee olemaan jatkuvaa ja sen voi tallentaa editorin hakukomennoksi pysyvästi.

    Äänestä

  • Mäkkitupalainen kirjoitti:

    Taulukon alussa on otsikkotietoa, johon tuo kuvio ei sovi, joten skripti ei toimi koko tiedostolle, mutta editorilla voi helposti aloittaa halutulta riviltä. Mulla on siis editori, jonka Etsi/korvaa -kenttiin kelpaa myös grep-lausekkeet.
    Eikös niillä voisi määritellä tuollaista kolmen ryhmää, jossa etsitään:
    (*\r *\r *\r)
    joka korvataan:
    (1\t 2\t 3\r)

    Jotain tuon tapaista?

    Tuon tempun tarve tulee olemaan jatkuvaa ja sen voi tallentaa editorin hakukomennoksi pysyvästi.

    Noh prkl en huomannut että tämä oli perl alue, muuten en olis mitään python skriptiä ees ehdottanut :)

    Grep lauseke? ilmeisesti kuitenkin tarkoitat "regular expression" -lauseketta :) Hämäsi vähäsen.

    Jos sinun on tarkoitus automatisoida tuon hakeminen ja muokkaaminen, niin äkikseltään tuntuis paremmalta unohtaa editori välivaihe kokonaan pois.

    Noh - kuitenkin tekasin joutessani regexpin joka toimii ainakin mun wintöötselissä (pythonilla) mutta sama regexp syntaksi siinä on käytössä.
    >>> p = re.compile('(.*)\n(.*)\n(.*)\n')
    >>> print p.sub('\\1\t\\2\t\\3\\n', s)
    A1 B1 C1
    A2 B2 C2
    A3 B3 C3

    Etköhän tuosta osaa muokata jo itekkin editoriisi toimivan syntaksin.. jos et päätä ohittaa koko vaihetta jollain skriptillä

    Äänestä

Kommentoi aloitusta


Mäkkihöperö kirjoitti:

Kolmisarakkeinen pitkä taulukko on kopioitu veppisivulta, mutta erottimeksi tullut rivinvaihto CR eli (\r) joka solun väliin!
Sen palauttamiseksi alkuperäiseen muotoon kolmen ryhmän kaksi ensimmäistä CRää (\r) pitäisi vaihtaa TABeiksi(\t) ja kolmas jättää silleen.
Miten tuo tehdään grep komennoilla? Siis muodosta
A1
B1
C1
A2
B2
C2
jne
alkuperäiseen muotoon:
A1 B1 C1
A2 B2 C2
jne

On päässyt tempputaidot ruostumaan ;-(

Selaimen vanha versio kopioi tuon oikein, mutta uusi ei enää!!!

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