[CS] Introduction to UNIX

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

timvdm
Posts: 47

Re: [CS] Introduction to UNIX

Post#31 » Sun Sep 30, 2012 10:16 pm

TaaiePop wrote:Kan iemand me a.u.b. op weg helpen met blok 4, vragen l & m? Ik vind de antwoorden maar niet :(
(l) Store all names that are both male and female names in unisex-names.

Je hebt dus all-names van daarvoor. Nu moet je alle gedupliceerde namen naar unisex-names schrijven. Dus eigenlijk is dit hetzelfde als (k) maar dan met een redirect... In het geval dat je (k) ook niet hebt, gebruik dan "uniq" om de gedupliceerde namen te printen (zoek "only print duplicate lines" in man uniq)

(m) Remove duplicate names from all-names.

Dit is eigenlijk hetzelfde maar deze keer moet je niet de gedupliceercde maar unieke names redirecten naar een file. Gebruik dus "uniq" zonder het argument van (l) dat je gebruikte om enkel gedupliceerde names te krijgen.

User avatar
Axelle
Posts: 9

Re: [CS] Introduction to UNIX

Post#32 » Mon Oct 01, 2012 1:55 am

Had hetzelfde probleem bij m, ik snap het principe wel maar ik krijg het niet in dezelfde file. Of mag je het gewoon in een andere file zetten?

Disparv
Posts: 18

Re: [CS] Introduction to UNIX

Post#33 » Mon Oct 01, 2012 10:58 am

gwn de output van 'uniq' redirecten met '>'

timvdm
Posts: 47

Re: [CS] Introduction to UNIX

Post#34 » Mon Oct 01, 2012 11:21 am

Axelle wrote:Had hetzelfde probleem bij m, ik snap het principe wel maar ik krijg het niet in dezelfde file. Of mag je het gewoon in een andere file zetten?
Ik heb dit gebruikt:

Code: Select all

cat all-names | uniq > all-names

timvdm
Posts: 47

Re: [CS] Introduction to UNIX

Post#35 » Mon Oct 01, 2012 11:45 am

timvdm wrote:
Axelle wrote:Had hetzelfde probleem bij m, ik snap het principe wel maar ik krijg het niet in dezelfde file. Of mag je het gewoon in een andere file zetten?
Ik heb dit gebruikt:

Code: Select all

cat all-names | uniq > all-names
Sorry, het moet eigenlijk dit zijn vermits je niet direct naar hetzelfde file kunt redirecten:

Code: Select all


cat all-names | uniq > all-names-tmp
mv all-names-tmp all-names

User avatar
Chrizzle
WOZ
Posts: 449

Re: [CS] Introduction to UNIX

Post#36 » Mon Oct 01, 2012 4:56 pm

timvdm wrote:
timvdm wrote:
Axelle wrote:Had hetzelfde probleem bij m, ik snap het principe wel maar ik krijg het niet in dezelfde file. Of mag je het gewoon in een andere file zetten?
Ik heb dit gebruikt:

Code: Select all

cat all-names | uniq > all-names
Sorry, het moet eigenlijk dit zijn vermits je niet direct naar hetzelfde file kunt redirecten:

Code: Select all


cat all-names | uniq > all-names-tmp
mv all-names-tmp all-names
En als ge creatief gebruik maakt van && kunde da zelfs in een lijn steken

Code: Select all


cat all-names | sort | uniq > all-names.tmp && mv all-names.tmp all-names && rm all-names.tmp
Btw, ge moet ook sort'en denk ik .. uniq verwijdert enkel opeenvolgende duplicate entries, could be wrong though ...
irc.winak.be:6667
#winak

timvdm
Posts: 47

Re: [CS] Introduction to UNIX

Post#37 » Mon Oct 01, 2012 6:09 pm

Chrizzle wrote:
timvdm wrote:
timvdm wrote:
Axelle wrote:Had hetzelfde probleem bij m, ik snap het principe wel maar ik krijg het niet in dezelfde file. Of mag je het gewoon in een andere file zetten?
Ik heb dit gebruikt:

Code: Select all

cat all-names | uniq > all-names
Sorry, het moet eigenlijk dit zijn vermits je niet direct naar hetzelfde file kunt redirecten:

Code: Select all


cat all-names | uniq > all-names-tmp
mv all-names-tmp all-names
En als ge creatief gebruik maakt van && kunde da zelfs in een lijn steken

Code: Select all


cat all-names | sort | uniq > all-names.tmp && mv all-names.tmp all-names && rm all-names.tmp
Btw, ge moet ook sort'en denk ik .. uniq verwijdert enkel opeenvolgende duplicate entries, could be wrong though ...
Dat klopt (uniq verwijderd enkel adjacent duplicated items), maar in opgave (j) sorteren we all-names dus dit is geen probleem.

En je kan '&&' ook vervangen door ';', is minder typen :P

Je laatste commando is wel overbodig vermits je all-names.tmp moved naar all-names kan je all-names.tmp niet meer verwijderen.

Maar toch bedankt om ons te helpen en ik maak ook vaak van die kleine foutjes met snel te willen zijn :)

User avatar
Robbe
WOZ
Posts: 2161
Contact:

Re: [CS] Introduction to UNIX

Post#38 » Tue Oct 02, 2012 11:14 am

even wat tips om de commandlines wat korter te maken:

Code: Select all

cat blah | [grep|sed|cut|...] "..." -> [grep|sed|cut|...] "..." blah
sort | uniq -> sort -u
als je zeker geen probleem wil hebben met nameclashing: mktemp

Code: Select all

#!/bin/bash
TIJDELIJK="$(mktemp)"
sort -u blabla > $TIJDELIJK
mv $TIJDELIJK blabla
less pipes is more ;)

bron: de manpages (en/of texinfos) van grep, sed, cut, mktemp, sort...
"I'm not afraid of falling, I'm afraid of landing" -- Sam
How To Ask Questions The Smart Way

Zingen? UKA-n dat ook!

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 7 guests

cron