Kirjoittaja Aihe: Rivien yhdistäminen RATKAISTU  (Luettu 1717 kertaa)

VOJ

  • Käyttäjä
  • Viestejä: 135
    • Profiili
Rivien yhdistäminen RATKAISTU
« : 01.03.11 - klo:06.21 »
Olen yrittänyt keksiä miten saisin aikaiseksi yksinkertaisen bash-skriptin, joka yhdistäisi rivin edelliseen riviin silloin kun rivi alkaa pienellä kirjaimella.

Taidot eivät vaan oikein riitä.

Vinkeistä olisi apua. Kiitos.
« Viimeksi muokattu: 01.03.11 - klo:12.08 kirjoittanut VOJ »

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Rivien yhdistäminen
« Vastaus #1 : 01.03.11 - klo:08.21 »
Olen yrittänyt keksiä miten saisin aikaiseksi yksinkertaisen bash-skriptin, joka yhdistäisi rivin edelliseen riviin silloin kun rivi alkaa pienellä kirjaimella.

Taidot eivät vaan oikein riitä.

Vinkeistä olisi apua. Kiitos.

Onko se oltava puhdasta bash:ia?
Kai tuo onnistuu mutta jos hommalla kiire niin olisiko perl mitään ;)

VOJ

  • Käyttäjä
  • Viestejä: 135
    • Profiili
Vs: Rivien yhdistäminen
« Vastaus #2 : 01.03.11 - klo:09.45 »
Lainaus
Onko se oltava puhdasta bash:ia?
Kai tuo onnistuu mutta jos hommalla kiire niin olisiko perl mitään ;)

Aamusta taisi olla vielä aivot kohmeessa. Tarkoitin että olen tutkinut awkia ja sediä ko. tarkoitukseen. Täytynee alkaa tutustua perliin. Ei ole vaan ennen tullut käytettyä sitä. W-tyylillä olisin varmaan jo tehnyt sen Qbasicillä.

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Rivien yhdistäminen
« Vastaus #3 : 01.03.11 - klo:11.11 »
Lainaus
Onko se oltava puhdasta bash:ia?
Kai tuo onnistuu mutta jos hommalla kiire niin olisiko perl mitään ;)

Aamusta taisi olla vielä aivot kohmeessa. Tarkoitin että olen tutkinut awkia ja sediä ko. tarkoitukseen. Täytynee alkaa tutustua perliin. Ei ole vaan ennen tullut käytettyä sitä. W-tyylillä olisin varmaan jo tehnyt sen Qbasicillä.

Olisko tuosta pohjaksi ja malliksi?

#!/usr/bin/perl -w
open(IN,$ARGV[0]);
while(<IN>)
{
  chomp();
  $alkukirjain=substr($_,0,1);
  if($alkukirjain eq uc($alkukirjain))
  {
    print "\n".$_;
  }
  else
  {
    print " ".$_."";
  }
}

Edit: Niinjoo, tuo $ARGV[0] on sitten ao. skriptille annettava tiedostonimi.
eli jos skripti on nimetty palikka.pl niin loitsu ./palikka tutkittava_file.txt

Ja luonnollisesti vain tekstifilet kelpaavat syötteeksi, ei mitään pakattuja ja/tai muita binäärijuttuja.
« Viimeksi muokattu: 01.03.11 - klo:11.24 kirjoittanut jekku »

SuperOscar

  • Käyttäjä
  • Viestejä: 4000
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Rivien yhdistäminen
« Vastaus #4 : 01.03.11 - klo:11.14 »
Pythonilla jotenkin näin... kömpelöä muttei nyt tule heti mieleen elegantimpaa ratkaisua.

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from sys import argv
from string import lowercase as pienaakkoset

pienaakkoset += 'åäö'

for arg in argv[1:]:
    edell = ''
    for rivi in open(arg, 'r'):
        if rivi[0] not in pienaakkoset:
            if edell != '':
                print(edell)
            edell = rivi.rstrip()
        else:
            edell += rivi.rstrip()
    if edell != '':
        print(edell)
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

VOJ

  • Käyttäjä
  • Viestejä: 135
    • Profiili
Vs: Rivien yhdistäminen
« Vastaus #5 : 01.03.11 - klo:12.07 »
Toimii. Kiitoksia.