Toon posts:

Scriptje CUT hoe werkt dat.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een scriptje aan het bouwen

Hoe krijg ik deze string korter? Links wil ik de "." er af en rechts de ":"

Het moet waarscheinlijk met het commando cut. Maar dat wil maar niet lukken.
Mischien dat iemand mij kan helpen.

String = ./dir1/dirC:

Scriptje
============================================
MAIN_DIR=`pwd`
ls -R | grep : > $MAIN_DIR\dirlist
while read LINE
do
REGEL="$LINE"

echo "$REGEL"
echo " $MAIN_DIR$REGEL"

done < $MAINDIR\dirlist
============================================
Uitvoer:
.:
/home/marc/vuurwerk.:
./dir1:
/home/marc/vuurwerk./dir1:
./dir1/dirA:
/home/marc/vuurwerk./dir1/dirA:
./dir1/dirB:
/home/marc/vuurwerk./dir1/dirB:
./dir1/dirC:
/home/marc/vuurwerk./dir1/dirC:
./dir2:
/home/marc/vuurwerk./dir2:
./dir3:
/home/marc/vuurwerk./dir3:


Kortom die "." en die ":" moeten weg

cut --help en man cut zijn bijden erg vaag.

  • Fatal-Error
  • Registratie: Juli 2001
  • Niet online
Je kunt bijvoorbeeld
code:
1
cut -d "." -f 2 | cut -d ":" -f 1
gebruiken, maar kijk ook eens naar sed en awk.

[ Voor 0% gewijzigd door Fatal-Error op 20-08-2002 11:23 . Reden: verkeerde tag... ]

Welcome to the desert of the real.


Verwijderd

Nog een optie:

TST=./abc/:

PUNTWEG=${TST#.}

DUBBELEPUNTOOKWEG=${PUNTWEG%:}

Dit werkt in ieder geval in de ksh, maar ook in bash dacht ik.

# verwijdert vooraan, non-greedy
## verwijdert vooraan, greedy
% verwijdert achteraan non-greedy
%% verwijdert achteraan greedy.

Wildcards zijn: ? voor een enkel karakter en * voor een willekeurig aantal karakters.

Het voordeel van deze constructies is dat er geen extra programma's gestart hoeven te worden (zoals bij cut/sed/awk) omdat ze door de shell zelf worden uitgevoerd.

Nadeel is dat weinig mensen ze kennen en ze dus voor de meeste mensen slecht leesbaar zijn.

[ Voor 0% gewijzigd door Verwijderd op 20-08-2002 12:00 . Reden: typos ]