Siis kaksi peräkkäistä whitespaceja sisältävää riviä pitäisi jättää kodskemattoamaksi mutta vain yksittäiset 'tyhjät' poidstettava.
Tuo on aika klassinen "hankala" tehtävä "sed": lle. Annan vinkin mutta jätän onnistumisen riemun sinulle. Tuohon on pari eri tapaa mutta helppo tapa on kiertää ongelma, korvataan "LF" jollain helpommalla merkillä (sed: in kannalta), se etsintäsääntö sitten on: Etsi kaksi "LF" merkkiä jonka edessä tai perässä ei ole "LF". Tuossa siis se "LF" on nyt jokin helpompi merkki. Palautetaan "LF" alkuperäiseksi. "tr" vaihtaa kätevästi merkin toiseksi.
Edit: Mielessäni heräsi vielä kysymys onko kyseessä tilanne kaksi peräkkäistä
<LF> <LF> kuten oletin vai
<LF> <"jotain_muuta_valkoista"><LF> ?
Vai tarkoititko jotain aivan muuta ? "Tyhjä rivi" voi tarkoittaa hyvin monta eri asiaa/kombinaatiota.
Aito mallidatan pätkä auttaisi näkemään mitä se tarkasti ottaen on. Voisitko laittaa pätkän dataa privana tulemaan ellet halua esille, kirjoittelen sille säännön.
Edit_2:
Annan esimerkin tapauksessa että tuo yksi tyhjä rivi on rakenteeltaan yksinkertaisesti
<LF><LF>
Oletetaan että meillä on koetiedosto "koe.txt" jolla testataan toimintaa. Tässä on lause joka tiputtaa vain yksinäisen tyhjän rivin tuosta tiedostosta:
cat koe.txt | tr '\n' '|' | sed 's/\([^|]\)\(||\)\([^|]\)/\1|\3/g' | tr '|' '\n' >koe2.txt
mutta jättää useamman tyhjän rivin koskemattomaksi ja kirjoittaa tuloksen koe2.txt tiedostoon.
Jos tuo yksinkertainen versio ei tee mitä haluat niin siihen pystyy täydentämään puutteet säännössä. Sääntö käyttää tilapäisenä merkkinä palkkia "|" eli putkimerkkiä. Tuo ei saa esiintyä varsinaisessa tekstissä.
Selitys:
Jokainen <LF> merkki korvataan ensin palkilla "|". Sääntö on jaettu kolmeen osaan suluilla ()()() mutta nuo pitää sed: in tapauksessa "eskeipata" eli laittaa kenoviiva kunkin sulkumerkin eteen. Näihin suluilla merkittyihin alueisiin voidaan viitata merkinnöillä "\1 \2 \3". Merkintä "\1" siis palauttaa osuma-alueen 1, "\2" osuma-alueen 2, jne. Etsimme nyt osumaa tilanteessa missä on kaksi ja vain kaksi palkkia peräkkäin. Sääntönä tuon joutuu muotoilemaan:
<ei_palkki> <||> <ei_palkki>
mikä vastaa sitä yhtä tyhjää riviä eli alkuaan <LF><LF>.
Säännössä tarvitaan nuo "esteet" että vältetään osuma kun palkkeja on enemmän kuin kaksi peräkkäin.