Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   Oefening met de VI tekstverwerker (https://forum.scholieren.com/showthread.php?t=1487934)

wp160366 16-10-2006 13:07

Oefening met de VI tekstverwerker
 
Hallo allemaal,

Iemand die hiermee kan helpen?

Probeer de letters van het woord “COMPUTERGEBRUIK” alfabetisch te rangschikken, zonder daarbij manueel letters te verplaatsen.
Je moet dus vi het werk laten doen door gebruik te maken van (een viertal) commando’s.
Tip: Ga na wat de volgende commando’s doen:
:1,$ !sort
:1,$j!

Alvast bedankt!

WelVrolijk 16-10-2006 13:31

Ik weet niet wat dat !sort commando doet, maar ik neem aan dat dat de opgegeven regels alfabetisch sorteert.

In dat geval zul je dus eerst elke letter moeten vervangen door letter + regeleinde,
vervolgens de regels sorteren,
en tenslotte die regeleindes weer verwijderen.

Maar dat werkt natuurlijk alleen, indien dat woord het enige is wat in het bestand staat...

wp160366 26-10-2006 14:18

Citaat:

WelVrolijk schreef op 16-10-2006 @ 14:31 :
Ik weet niet wat dat !sort commando doet, maar ik neem aan dat dat de opgegeven regels alfabetisch sorteert.

In dat geval zul je dus eerst elke letter moeten vervangen door letter + regeleinde,
vervolgens de regels sorteren,
en tenslotte die regeleindes weer verwijderen.

Maar dat werkt natuurlijk alleen, indien dat woord het enige is wat in het bestand staat...

Hallo,
Bedankt voor je antwoord, en sorry dat ik maar zo laat kan reply'en.

Dit woord is inderdaad het enige in dit bestand.

Dat ik elke letter moet vervangen door letter + regeleinde had ik ook al gevonden, maar dit commando is juist mijn probleem, weet namelijk niet direct hoe ik dit kan doen.

Dat !sort commando sorteert alles inderdaad alfabetisch. Alvast bedankt!

WelVrolijk 26-10-2006 20:16

De code voor Regeleinde zou ik zo gauw niet weten.

Hangt ook af van je besturingssysteem.

Voor een EBCDIC-bestand is het in ieder geval 0D 25.

Voor een ASCII-bestand uit een DOS-omgeving (zoals Windows) is het 0D 0A.

Voor een ASCII-bestand uit een UNIX-omgeving is het ofwel 0D, ofwel 0A. DIt weet ik zo gauw niet uit mijn hoofd, maar dat kun je vast wel googelen.

WelVrolijk 26-10-2006 21:48

Citaat:

wp160366 schreef op 26-10-2006 @ 15:18 :
HDat ik elke letter moet vervangen door letter + regeleinde had ik ook al gevonden, maar dit commando is juist mijn probleem, weet namelijk niet direct hoe ik dit kan doen.
Even wat gegoogled, maar ik ben er nog niet helemaal uit.

- Een willekeurige letter geef je in een zoekstring aan met een punt ( "." ).
- Een regeleinde geef je in een zoekstring aan met backslash + n ( "\n" ).

-----

Je zou het volgende eens kunnen proberen:

s/\(.\)/\1\n\

De . staat voor een willekeurig character.
De \( en \) zorgen er (hopelijk) voor dat we later naar die letter kunnen refereren.

De \1 haalt (hopelijk) het eerder gevonden willekeurige character terug.
De \n plakt er een regeleinde achteraan.

Ik heb op dit moment geen vi bij de hand, dus ik kan het niet testen...

vrolijk 27-10-2006 12:28

Werkt niet op vi in een AIX 4.4 environment.

wp160366 27-10-2006 12:40

Alvast bedankt voor de hulp!

Als ik jouw suggestie probeer krijg ik het volgende: CnOMPUTERGEBRUIK.

Groeten,

Vrolijk 27-10-2006 15:56

Probeer in plaats van \n eens:

Control+V <Enter>
(maar dan zonder de spatie er tussen:
Ziet er waarschijnlijk uit als ^M )

En dan moeten we nog een manier verzinnen om dit voor *alle* voorkomens te doen, niet alleen voor de eerste...

Vrolijk 27-10-2006 16:02

s/\(.\)/\1^M/g

Waarbij je ^M weer moet intikken als "Control-V" "Enter" .

Vrolijk 27-10-2006 16:11

Ik krijg:

BCEEGIKMOPRRTUU


------------

Nu nog bedenken, waar we dat vierde commando voor nodig hebben.

IvdSangen 28-10-2006 02:05

Code:

%s/./&^M/g
:1,$ !sort
:1,$j!
%s/\ //g

Dit werkt in vim. Vi kan ik niet testen.

WelVrolijk 28-10-2006 10:29

Citaat:

IvdSangen schreef op 28-10-2006 @ 03:05 :
Code:

%s/./&^M/g
:1,$ !sort
:1,$j!
%s/\ //g

Dit werkt in vim. Vi kan ik niet testen.

Ah.

Die eerste regel ziet er een heel stuk overzichtelijker uit dan de mijne!
Een grote stap vooruit, dus.

Maar wat doet die vierde regel?
Bij mij had ik het eindresultaat (in vi) al na 3 commando's.
Wat doe ik fout?

WelVrolijk 28-10-2006 10:49

Citaat:

IvdSangen schreef op 28-10-2006 @ 03:05 :
Code:

%s/./&^M/g
:1,$ !sort
:1,$j!
%s/\ //g

Dit werkt in vim. Vi kan ik niet testen.

Bij die vierde regel krijg ik in vi:
Pattern not found: \

Maar dat is op linux, niet op Unix.

IvdSangen 28-10-2006 11:35

Na het verwijderen van de newlines in regel 3 staan er spaties tussen de letters. Die spaties verwijder ik in die laatste regel.

Edit: Vreemd. Nu krijg ik inderdaad ook het correcte resultaat na stap 3.

wp160366 29-10-2006 17:04

Citaat:

IvdSangen schreef op 28-10-2006 @ 03:05 :
Code:

%s/./&^M/g
:1,$ !sort
:1,$j!
%s/\ //g

Dit werkt in vim. Vi kan ik niet testen.

Hiermee krijg ik ook :BCEEGIKMOPRRTUU

Alvast bedankt voor al jullie hulp! Ik blijf ook verder zoeken, en laat het weten als ik een oplossing vindt!

wp160366 01-11-2006 16:58

Het antwoord gevonden:

s/./&^M/g


Alle tijden zijn GMT +1. Het is nu 05:53.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.