Tuossa kuvassa on muutama esimerkki, mutta yksi niistä puuttuu. Miten poimit 3 merkkiä, merkkijonon lopusta. Huomaa että tässä ei tunneta merkkijonon pituutta.
https://s5.gifyu.com/images/merkkijono.png
BASH Shell ja Merkkijonon käsittelyä
18
154
Vastaukset
- Anonyymi
Tepä olette älykäs, Te!
- Anonyymi
Niin kai kun Shelliltä se pöllii Sinolia! kun sen rahat taas loppu ja lääkkeetkin.
- Anonyymi
Olkoot merkkijono "123567890" muuttujassa "merkkijono".
merkkijono="'1234567890" && echo "${merkkijono: -3}"
Tulostaa "890".- Anonyymi
Nyt on lista täydellinen, Kiitos!
T. ketjun avaaja
- Anonyymi
Häirikkö levittää Perättömia valheita
Firefoxista,
Linuxista
Ubuntusta.
ym.- Anonyymi
Ei levitä tässä ketjussa. Kommentoi sinne, missä levittää!
- Anonyymi
string="1234567890"; echo ${string:7}
- Anonyymi
Tuo taitaa tulostaa 7 ensimmäistä merkkiä?
- Anonyymi
Jos jatkan tätä ei avaukseen piiriin kuuluvaa, niin sed -komentoa käyttäen voidaan suodattaa ei halutut merkit:
echo "1234567890" | sed -e "s/[1234567]//g" #890
Edellisessähän täytyi tuntea merkkijonon pituus, ja tässä taas täytyy tuntea ei halutut merkit. Laitoin vain siksi, jos joku saisi tästä ahaa-elämyksen. Itse asiassa oletin tuossa joitakin aikoja sitten jonkun käyttäneen sed -komentoa viestinsä sisällön muokkaamiseen, kun oli systemaattisesti vaihdettu välilyönnit alaviivaan.
T. Urpo - Anonyymi
Anonyymi kirjoitti:
Tuo taitaa tulostaa 7 ensimmäistä merkkiä?
Kyllä se tulostaa kolme viimeistä, mutta siinä täytyy tuntea merkkijonon pituus, että osaa laittaa tuon 7. Siitä sainkin tuon idean tuohon hiukan sekavaan vastaukseen:
string="1234567890"; echo ${string:$((${#string}-3))}
Jossa suoritetaan tuo poistettavien määrän selvitys laskemalla, sehän on muuten sama kuin tuossa yllä oleva, mutta suora 7 on korvattu laskennan tuloksella, jolloin merkkijonon pituus voi olla mikä tahansa. - Anonyymi
Anonyymi kirjoitti:
Kyllä se tulostaa kolme viimeistä, mutta siinä täytyy tuntea merkkijonon pituus, että osaa laittaa tuon 7. Siitä sainkin tuon idean tuohon hiukan sekavaan vastaukseen:
string="1234567890"; echo ${string:$((${#string}-3))}
Jossa suoritetaan tuo poistettavien määrän selvitys laskemalla, sehän on muuten sama kuin tuossa yllä oleva, mutta suora 7 on korvattu laskennan tuloksella, jolloin merkkijonon pituus voi olla mikä tahansa.Joo niin se tulostaa alkaen merkistä 7 loppuun.
No ehkä se -3 toimii aloituksen tehneen tapaukseen parhaiten.
- Anonyymi
Tässä selvitetään ensin merkkijonon pituus:
echo ${#string}
josta sitten vähennetään kolme
string="1234567890"; echo ${string:$((${#string}-3))}
loppu tulos on: 890
T. Urpo- Anonyymi
Tarviiko pituutta jossain muualla?
Miinusmerkillä tehtäessä pitää muistaa välilyönnin merkitys sen ja kaksoispisteen välillä.
merkkijono="1234567890";echo "${merkkijono:-3}"
1234567890
merkkijono="1234567890";echo "${merkkijono: -3}"
890
- Anonyymi
string="1234567890"; echo ${string:7:10}
- Anonyymi
Näitä ratkaisuja jotka perustuu siihen että tunnetaan merkkijonon pituus ja että tunnetaan merkkijonon sisältö, on mielettömästi.
- Anonyymi
Tämä ketju saattaakin olla aloittelevalle, varsin käsittämätöntä sotkua.
- Anonyymi
Jos raaskii Pythonin polkaista käyntiin, niin vaihtoehto voisi olla
echo "1234567890" | python3 -c "print(input()[-3:])"
890- Anonyymi
Ja sekin toimii, ja nätisti toimiikin.
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ikävä sua j-mies!
Enkä oikeesti ymmärrä miksi. Eihän me tunneta ees kovin hyvin. Mut haluaisin sun kanssa jotain säätöä sit kai vaan 🫦585485Voi itku! Sanna Marinilla EI OLLUT mitään tekemistä jäänmurtajakauppojen kanssa
Miten tässä näin kävi? Sanna-kultti paniikissa.1724431En välttämättä koskaan aikaisemmin tosissani uskonut mihinkään sielunkumppanuuteen ym
Ennen kuin tapasin sinut. Oudointahan tässä on että ollaan tiedetty toisemme kuitenkin vuosia ja enemmän vuosia, mutta v163892Sanna Marin kysyi hämmästyneenä: Onko Suomessa jäänmurtajia?
Nettilehden toimittaja kysyi Sanna Marinilta suoraan, että sovittiinko nuo jäänmurtajien kaupat jo 2019, jolloin Marin k383456- 513441
- 583218
- 103020
- 252607
- 462287
- 392246