Jos rivi sisältää merkkijonon...

helppppp me

Pitäisi etsiä tiedostosta rivit jotka ovat muotoa:

[[JOTAIN]]
ja
==JOTAIN==

muttei

[[[EI TÄTÄ]]]
eikä
===EIKÄ TÄTÄ===
eikä
=======EIKÄ MYÖSKÄÄN TÄTÄ========
jne..

Eli pitäisi korjata tämä koodi:


while read inputline
do
if [[ $inputline == ==*== ]]
then
echo $inputline >> uusidata.txt
fi
if [[ $inputline == [[*]] ]]
then
echo $inputline >> uusidata.txt
fi
done < data.txt

13

67

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Tom peli

      grep "^\[\[.*\]\]\|^==.*==" data.txt | \
      grep -v "\[\[\[.*\]\]\]\|===.*===" > uusidata.txt

      (Toivottavasti palstan softa ei suodata merkkejä...)

      • Tom peli

        grep "^\[\[.*\]\]$\|^==.*==$" data.txt | \
        grep -v "\[\[\[.*\]\]\]\|===.*===" > uusidata.txt

        Aiemmasta jäi rivin loppumerkki "$" pois. Siis jos on tarkoitus poimia vain rivit, joilla "]]" tai "==" jälkeen ei ole mitään. Samoin poimitaan vain rivit, jotka alkavat "[[" tai "==", mikä olin jo aiemmin ottanut huomioon merkillä "^".


      • helppppp me
        Tom peli kirjoitti:

        grep "^\[\[.*\]\]$\|^==.*==$" data.txt | \
        grep -v "\[\[\[.*\]\]\]\|===.*===" > uusidata.txt

        Aiemmasta jäi rivin loppumerkki "$" pois. Siis jos on tarkoitus poimia vain rivit, joilla "]]" tai "==" jälkeen ei ole mitään. Samoin poimitaan vain rivit, jotka alkavat "[[" tai "==", mikä olin jo aiemmin ottanut huomioon merkillä "^".

        Saako sen toimimaan tolla "if:lla" niin kuin mulla oli?

        Tarkoitus on myöhemmin lisätä muutakin koodia sinne.


      • debdebdeb
        helppppp me kirjoitti:

        Saako sen toimimaan tolla "if:lla" niin kuin mulla oli?

        Tarkoitus on myöhemmin lisätä muutakin koodia sinne.

        saa


      • Tom peli
        helppppp me kirjoitti:

        Saako sen toimimaan tolla "if:lla" niin kuin mulla oli?

        Tarkoitus on myöhemmin lisätä muutakin koodia sinne.

        Ilmeisesti harjoitustyössä käsketään käyttämään silmukkaa ja if-lausetta.


      • helppppp me
        Tom peli kirjoitti:

        Ilmeisesti harjoitustyössä käsketään käyttämään silmukkaa ja if-lausetta.

        Ei, vaan kuten sanoin if silmukkoihin on tarkoitus lisätä muuta koodia. Esim, tarkoitus on poistaa nuo == ja [[ merkit, jne...


      • helppppp me
        Tom peli kirjoitti:

        Ilmeisesti harjoitustyössä käsketään käyttämään silmukkaa ja if-lausetta.

        Heti toinen ongelma:

        Jos rivi sisältää merkkijonon:

        * Jotain ihan vaan

        niin tämä rivi

        echo $inputline >> data.txt

        lisää tiedostoon:

        Desktop Downloads Music Documents Movies Pictures Jotain ihan vaan

        Eli suoriittaa: "echo *" kommennon.

        Miten sen voi estää?


      • /7\|/7\
        helppppp me kirjoitti:

        Heti toinen ongelma:

        Jos rivi sisältää merkkijonon:

        * Jotain ihan vaan

        niin tämä rivi

        echo $inputline >> data.txt

        lisää tiedostoon:

        Desktop Downloads Music Documents Movies Pictures Jotain ihan vaan

        Eli suoriittaa: "echo *" kommennon.

        Miten sen voi estää?

        laita joku esimerkki tiedostosta ja esimerkki siitä mitä siitä pitää ottaa.. eihän tuosta kukaan saa enää tolkkua.


      • helppppp me
        /7\|/7\ kirjoitti:

        laita joku esimerkki tiedostosta ja esimerkki siitä mitä siitä pitää ottaa.. eihän tuosta kukaan saa enää tolkkua.

        Skripti lukee jokaisen rivin tiedostosta ja tulostaa sen uuteen tiedostoon:

        while read inputline
        do
        echo $inputline >> uusidata.txt
        done < data.txt

        Ongelma:

        Jos "data.txt" tiedostossa on vaikka rivi:

        * Hello World

        Sen sijan, että se tulostaisi sen sellaisenaan uuteen tiedostoon, se suorittaa:

        echo * -kommennon, eli listaa kaikki tiedostot mitä on hakemistossa ja lisää listauksen uuteen tiedostoon.

        Kokeile vaikka itse, miten eroaa:

        $ echo Hello World > uusi.txt
        ja
        $ echo * Hello World > uusi.txt


      • /7\|/7\
        helppppp me kirjoitti:

        Skripti lukee jokaisen rivin tiedostosta ja tulostaa sen uuteen tiedostoon:

        while read inputline
        do
        echo $inputline >> uusidata.txt
        done < data.txt

        Ongelma:

        Jos "data.txt" tiedostossa on vaikka rivi:

        * Hello World

        Sen sijan, että se tulostaisi sen sellaisenaan uuteen tiedostoon, se suorittaa:

        echo * -kommennon, eli listaa kaikki tiedostot mitä on hakemistossa ja lisää listauksen uuteen tiedostoon.

        Kokeile vaikka itse, miten eroaa:

        $ echo Hello World > uusi.txt
        ja
        $ echo * Hello World > uusi.txt

        niin,
        bash skriptaus on yhtä tarkkaa puuhaa kuin krapulan parantelu kossulla tai ripulin parantelu piereskelemällä.

        #!/bin/bash

        abc="* jotain"

        #tama on eri juttu
        echo $abc >> teksti.txt
        #kuin tama
        echo "$abc" >> teksti.txt


      • helppppp me
        /7\|/7\ kirjoitti:

        niin,
        bash skriptaus on yhtä tarkkaa puuhaa kuin krapulan parantelu kossulla tai ripulin parantelu piereskelemällä.

        #!/bin/bash

        abc="* jotain"

        #tama on eri juttu
        echo $abc >> teksti.txt
        #kuin tama
        echo "$abc" >> teksti.txt

        Kiitos,

        Vielä jos keksisi mikä on tehokkain tapa poistaa merkkijonon lopusta ja alusta kaksi merkkia:

        abc="[[Hello Wordl]]"

        Pitäis saada motoon:

        "Hello World"


      • /7\|/7\
        helppppp me kirjoitti:

        Kiitos,

        Vielä jos keksisi mikä on tehokkain tapa poistaa merkkijonon lopusta ja alusta kaksi merkkia:

        abc="[[Hello Wordl]]"

        Pitäis saada motoon:

        "Hello World"

        vähän vois itekin yrittää???

        abc="aajotainbb"

        q=`echo ${abc%??}`
        a=`echo ${q#??}`

        tai sitte vaikka /\[\[// ja /\]\]//
        tms....


      • /7\|/7\
        /7\|/7\ kirjoitti:

        vähän vois itekin yrittää???

        abc="aajotainbb"

        q=`echo ${abc%??}`
        a=`echo ${q#??}`

        tai sitte vaikka /\[\[// ja /\]\]//
        tms....

        saako muuten kysyä, että miksi bashilla pitää tämän kanssa tapella?
        huvi ja urheilu??? :)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Vasemmistohallitus palauttaa hintasääntelyn, esim. bensalitra vain 1e.

      Tuleva vasemmistolaisista koostuva hallitus ottaa käyttöön vanhat hyvät keinot pitää hinnat kurissa. Tähän tarkoitukse
      Maailman menoa
      83
      4597
    2. Vasemmistolainen valehteli jälleen - Purra tai persut eivät luvanneet "euron bensaa"

      Väite "euron bensasta" on ensisijaisesti poliittisten vastustajien käyttämä puhdas vale. Persut kyllä kampanjoivat näky
      Maailman menoa
      110
      3820
    3. Arman Alizadin viesti puna-aktivisteille: "Pitäkää lärvinne nytkin kiinni"

      Arman Alizad kritisoi vasemmiston kaksinaismoralismia. Iranissa syntynyt suosikkijuontaja Arman Alizad pakeni perheensä
      Maailman menoa
      173
      3612
    4. Minja Koskela nostanut vasemmistoliiton kannatuksen ennätykseen

      Koskela valittiin puolueen johtoon lokakuussa 2024, ja silloin Ylen kysely antoi puolueelle 9,3 prosentin kannatuksen.
      Maailman menoa
      55
      2046
    5. Antti johtaa Petteriä jo 7,1 prosenttiyksiköllä

      Tällä menolla sdp menee kokoomuksesta kierroksella ohi jo tällä vaalikaudella. https://yle.fi/a/74-20213575
      Maailman menoa
      71
      1928
    6. Mitä on tullut

      Entisen abcn rakennuksen tilalle se oli tyhjillään monta vuotta siellä oli jo nyt valot onko huoltoasema? 5:30.
      Haapavesi
      89
      1259
    7. Harmi nainen kun

      olet niin elähtäneen näköinen. Miestä et koskaan löydä itelles. j
      Ikävä
      129
      1104
    8. Palosta selvinnyt 18 vuotias munira tarvitsi tulkin kun puhui Iltalehdelle

      Suomessa asuva 18 vuotias tarvii tulkin !!! Tää Suomea puhumaton on palossa kuolleen naisen veli ja asui perheen kanssa.
      Vantaa
      140
      1050
    9. Minne pyydän sut?

      Jotta saan nähdä 🤨
      Ikävä
      57
      963
    10. Mikä homma?

      https://share.google/NvruSS4P4EzjTWPov Poliisilla oli keskiviikkona 4. maaliskuuta yksityisasunnossa Saarijärvellä tehtä
      Saarijärvi
      27
      882
    Aihe