linux scripting string lengte veranderen

Pagina: 1
Acties:

  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02-2025

Multispeed

HEY! Dat ben ik!

Topicstarter
Ik heb al wel de commando's voor de lengte van een string gevonden ( expr "123456789012345678901234567" : '[a-z,-]*' ) = 27 maar ik wil graag de string inkorten tot maximaal 15 tekens.
dus:
een string van variabele lengte (met read) verkregen mag maximaal 15 tekens zijn
(read kan ook met -r 15, maar ik wil wel het geheel inlezen en voor een gedeelte van het script maar 15 chars gebruiken))

[ Voor 23% gewijzigd door Multispeed op 28-10-2003 17:35 ]

En toevallig vind ik dus van niet! :-)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Welke scriptingtaal gebruik je sowieso - er zijn er zoveel!

Ik gok gewoon bash?

Verwijderd

code:
1
2
3
4
STRING="123456789";
SUBSTRING=`head -c4 | echo $STRING`

echo $SUBSTRING;


Waar 4 een willekeurig getal is.

  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

Verwijderd schreef op 28 oktober 2003 @ 18:15:
code:
1
2
3
4
STRING="123456789";
SUBSTRING=`head -c4 | echo $STRING`

echo $SUBSTRING;


Waar 4 een willekeurig getal is.
ehm, ik zou dat willen omdraaien:
SUBSTRING=`echo $STRING | head -c4 `

It sounds like it could be either bad hardware or software


  • mvdejong
  • Registratie: Juni 2000
  • Laatst online: 29-11-2024

mvdejong

When does the hurting stop ?

De substring-truc in shell-taal :

SHORTSTRING=`echo ${LONGSTRING} | cut -c<start>-<eind>`

dus voor jouw situatie :

SHORTSTRING=`echo ${LONGSTRING} | cut -c1-15`

The number of things that Arthur couldn't believe he was seeing was fairly large


  • mvdejong
  • Registratie: Juni 2000
  • Laatst online: 29-11-2024

mvdejong

When does the hurting stop ?

smokalot schreef op 28 oktober 2003 @ 18:24:
[...]

ehm, ik zou dat willen omdraaien:
SUBSTRING=`echo $STRING | head -c4 `
Sowieso niet, want head leest een maximum aantal regels uit een bestand, niet een maximum aantal tekens uit een regel.
Het effect van het beschrevene is gewoon :

SUBSTRING=${STRING}

The number of things that Arthur couldn't believe he was seeing was fairly large


Verwijderd

mvdejong schreef op 28 oktober 2003 @ 18:29:
[...]

Sowieso niet, want head leest een maximum aantal regels uit een bestand, niet een maximum aantal tekens uit een regel.
Het effect van het beschrevene is gewoon :

SUBSTRING=${STRING}
head leest anders ook gewoon std input als het geen file betreft hoor en de gegeven oplossing is dus inderdaad goed.

Verder gebruik je zelf al de notatie ${VAR}, waarom dan niet meteen de builtin bash manipulatie gebruiken:

code:
1
echo ${VAR:startpunt_string:lengte_string}


ofwel in bovenstaande voorbeeld
code:
1
echo ${STRING:0:4}

[ Voor 6% gewijzigd door Verwijderd op 28-10-2003 18:37 ]


  • mvdejong
  • Registratie: Juni 2000
  • Laatst online: 29-11-2024

mvdejong

When does the hurting stop ?

Verwijderd schreef op 28 October 2003 @ 18:36:
[...]

head leest anders ook gewoon std input als het geen file betreft hoor en de gegeven oplossing is dus inderdaad goed.
Sorry, eventjes over de "-c4" heen gelezen, i.p.v. "-4".
De "-c" variatie op head is niet in elke UNIX-versie beschikbaar, ik kende hem nog niet. Ik kom met bijna alle bestaande UNIX-platforms in aanraking, maar Linux is voor mijn nog een van de minst bekende.
Verder gebruik je zelf al de notatie ${VAR}, waarom dan niet meteen de builtin bash manipulatie gebruiken:
De accolades zijn niet voorbehouden aan bash, maar voor de meeste UNIX-shells een notatie om een onderscheid te maken welke tekens wel en niet tot de variabele-naam behoren.
Mijn oplossing is geldig voor alle van de Bourne-shell afgeleide versies (sh, ksh, bash, ...). Ik ben zelf meer een ksh- dan een bash-gebruiker (lekker command-line editen met vi-syntax).
De TS heeft nog steeds niet toegegeven welke shell hij gebruikt (het zou behalve een Bourne-variatie natuurlijk in theorie nog steeds ook csh kunnen zijn, of een exoot als psh, gsh of whatever).

The number of things that Arthur couldn't believe he was seeing was fairly large


Verwijderd

Juist, maar gezien het feit dat er in de topictitel al staat dat het linux betreft is de kans op bash wel extreem groot. Alle oplossingen tot nog toe maken gebruik van externe programma's (ook al staan die programma's natuurlijk in 99,99% van de gevallen wel op een dergelijke machine), terwijl dat natuurlijk overbodig is als de shell zelf al support biedt voor een dergelijke operatie (en je een dergelijk script niet in wil gaan zetten op allerlei andere distributies/OS'en).

[ Voor 14% gewijzigd door Verwijderd op 28-10-2003 23:39 ]


  • Multispeed
  • Registratie: Juli 2001
  • Laatst online: 19-02-2025

Multispeed

HEY! Dat ben ik!

Topicstarter
bedankt allemaal, het werkt.... ik gebruik bash op rh7.3

En toevallig vind ik dus van niet! :-)


  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Nelske: Goh, ik wist niet eens dat bash dat kon :X

Verwijderd

Gehehe, ondanks dat scripten in bash nu niet de meest handige oplossing is, zijn de string manipulatie methodes niet eens verkeerd nee ;)
Pagina: 1