Unix Shell scripting - strings

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Laatst online: 06:30
Ik heb de handleiding doorgelezen van bash shell script, maar ik kan een paar dingetjes niet vinden. Ik wil in een string bepalen of een woord voorkomt (dus niet één character), ik heb wel iets gevonden als 'index "string" char', maar dit werkt dus niet voor iets van 2 of meer letters.
Ook wil ik van een regel/string tellen hoeveel keer een character voorkomt, bestaat er een makkelijke optie dan middels index de eerste positie te bepalen en dan elke keer te substr'en? (werkt wel, maar moet makkelijk kunnen) :)

Acties:
  • 0 Henk 'm!

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

aarom niet externe commando's als grep of wc laten uitvoeren en de output capturen?
code:
1
`grep $0`

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:04
tellen hoeveel x een bepaalde letter in een string voorkomt is
code:
1
grep -c

dacht ik...

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
man je hebt wel een ernstig systeem
:9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~ :9~

Acties:
  • 0 Henk 'm!

Verwijderd

mmm klinkt alsof je perl wilt gebruiken, maar met een paar shell-tricks moet het ook kunnen...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
## string 
a="dit is een string met een woord daarin" 
 
## zoek het woord 
echo $a | grep 'woord' | read b 
if [ "$b" ] 
then 
  echo "woord 'woord' gevindt" 
fi 
 
## ff i'tjes tellen 
echo $a 
echo $a | sed -e 's/[^i]//g' | read c 
echo "There are " `expr length $c` " i's in string"

have fun!

Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Laatst online: 06:30
Ik heb mijn vraagstelling van vraag 1 verkeerd neer gezet, ik wil graag de POSITIE weten waar het woord zich bevind, dus niet OF er een woord in de string :)

Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij tel je regels, geen karakters, drSinister ;) Met tr lukt het wel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh

STRING='jodel dodel'

function index() {
  expr index "$1" "$2"
}

function count_char() {
  echo $(( $(expr length "$1") - $(expr length "$(echo "$1" | tr -d "$2")") ))
}

index "$STRING" d
count_char "$STRING" o

Acties:
  • 0 Henk 'm!

Verwijderd

mmm

let's see...
code:
1
2
3
a="dit is weer zon zin met een woord daarin verstopt"
echo $a | sed -e 's/woord.*/l | read $c
echo "woord zit op pos: "`expr length $c`
Pagina: 1