Vraag & Antwoord

OS Linux

[Bash] Eenvoudig scriptje om een string te bewerken

Anoniem
PeBo
4 antwoorden
  • Ik wat zit te rommelen met een BASH-scriptje waarmee ik een string wil bewerken. Ik kom er vooralsnog niet uit.

    Wat ik wil bereiken is: als de eerste zes karakters van een string gelijk zijn aan een (tweede) string van zes karakters worden die eerste zes karakters vervangen door een (derde) string van zeven karakters . Dus (in een soort quasi BASH-scripptaal) iets als:

    #!/bin/bash
    if STRING[1-6]="abcdef"
    then
    STRING="tuvwxyz"&STRING[7-einde]
    else
    #dit is natuurlijk niet echt nodig, maar wel informatief
    STRING=STRING
    fi

    Op dit moment zie ik door de vele GNU/Linux bomen (overal vind je wel informatie, maar net niet dat wat je zoekt!) het bos niet meer. Wie helpt mij op weg?
  • Ik zie op dit forum niet veel programmeer-vragen. Misschien kun je met je vraag beter terecht bij nl.linux.org/forum of forum.nedlinux.nl.
  • Wat mij betreft doen we hier ook programmeervragen :-)

    Je kan zoiets proberen (tip: koop een goed boek over Bash programming, of neem de bash man en info pages door. Staat ECHT ALLES in! De bash manpage uitprinten kan met [b:1c77a09602]man -t bash | lpr[/b:1c77a09602])
    [code:1:1c77a09602]
    #!/bin/bash
    #begint met "abcdef" ?

    string=$1 # eerste argument op de opdrachtregel

    if [ "${string:0:6}" = "abcdef" ]
    then
    string="tuvwxyz${string:6}"
    fi
    [/code:1:1c77a09602]

    de "[" is eigenlijk een shortcut voor de "test" instructie, dus het volgende kan ook:
    [code:1:1c77a09602]
    if test "${string:0:6}" = "abcdef"
    then
    string="tuvwxyz${string:6}"
    fi
    [/code:1:1c77a09602]
    of:
    [code:1:1c77a09602]
    test "${string:0:6}" = "abcdef" && string="tuvwxyz${string:6}"
    [/code:1:1c77a09602]Zie man bash, onder "Parameter Expansion"
  • Kijk eens naar de advanced-bash-scripting howto op www.linuxdoc.org. Daar kun je vast ook nog wel het een en ander in vinden.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.