Toon posts:

AWK script geeft geen goeie uitkomst.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

Ik was weer even bezig en nou had ik het volgende scriptje:
code:
1
2
3
4
5
{
 {if ($1 ~ /l./)
  {nr = nr +1} print "blaat"}
 {print "Resultaat:",nr}
}


De bedoeling van dit stukje code is om te kijken wat voor type file de file is.
Maar wanneer ik dit stukje code uitvoer dan krijg ik de volgende result:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
bash-2.05$ awk -f hup lijstje
blaat
Resultaat:
blaat
Resultaat:
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 1
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
blaat
Resultaat: 2
bash-2.05$


Ik weet dat er een optie close is maar ik weet niet precies wat ik moet closen. Zouden jullie me kunnen helpen.

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op vrijdag 08 april 2005 @ 16:41:
Hallo mensen,

Ik was weer even bezig en nou had ik het volgende scriptje:
code:
1
2
3
4
5
{
 {if ($1 ~ /l./)
  {nr = nr +1} print "blaat"}
 {print "Resultaat:",nr}
}


De bedoeling van dit stukje code is om te kijken wat voor type file de file is.
Maar wanneer ik dit stukje code uitvoer dan krijg ik de volgende result:
[..knip..]
Ik weet dat er een optie close is maar ik weet niet precies wat ik moet closen. Zouden jullie me kunnen helpen.
Awk is een filter taal die met rules werkt welke acties uitvoeren wanneer ze matchen op de invoer records.

Je script zou dus twee rules moeten bevatten:
code:
1
2
$1 ~ /1./ { nr = nr+1 }
END { print "Resultaat: " nr }



PS: /1./ is een regularexpressie dus matched alles wat een '1' bevat en gevolgd wordt door een character en dus niet alleen een woord dat beginnen met '1.', dan moet je /^1[.]/ gebruiken.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Topicstarter
Dawns_sister schreef op vrijdag 08 april 2005 @ 16:53:
[...]


Awk is een filter taal die met rules werkt welke acties uitvoeren wanneer ze matchen op de invoer records.

Je script zou dus twee rules moeten bevatten:
code:
1
2
$1 ~ /1./ { nr = nr+1 }
END { print "Resultaat: " nr }



PS: /1./ is een regularexpressie dus matched alles wat een '1' bevat en gevolgd wordt door een character en dus niet alleen een woord dat beginnen met '1.', dan moet je /^1[.]/ gebruiken.
Oke, alvast bedankt voor je oplossing heb het effen geprobeerd en het werkt super. Trouwens die '1' moet een 'l' zijn. Maar wat ik eigenlijk wil is dat ik wil kijken met wat voor type file ik te maken heb is het dus een link of een special file etc. Dus naar mijn mening zou ik dan gebruik moeten maken van de 'if ...... else if .... else if .......' of heb jij toevallig nog andere oplossing. Gegroet

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Kun je niet gewoon met een shell script i.c.m. file
of regex statements werken.
code:
1
2
3
if [ -h $file ] then echo "File is symlink" ; fi

if [ -d $file ] then echo "File is directory" ; fi


of denk ik nu te makkelijk ?

[ Voor 6% gewijzigd door u_nix_we_all op 08-04-2005 17:11 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
Tja that's the point. Het moet awk zijn. Maar het gaat nu wel de goeie kant op aan. Ik ga gewoon verder zoeken tot in de late uurtjes vannacht. Iniedergeval bedankt voor je input.

Verwijderd

ik dacht aan iets als:
code:
1
echo "Er zijn`find . -type f | wc -l` files"

Waarbij je met type aangeeft wat je wilt tellen.

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op vrijdag 08 april 2005 @ 17:04:
[...]
Oke, alvast bedankt voor je oplossing heb het effen geprobeerd en het werkt super. Trouwens die '1' moet een 'l' zijn.
Right, moet dus echt eens die nieuwe brilglazen bestellen :)
Ik zie totaal geen verschil.
code:
1
1 l
Maar wat ik eigenlijk wil is dat ik wil kijken met wat voor type file ik te maken heb is het dus een link of een special file etc. Dus naar mijn mening zou ik dan gebruik moeten maken van de 'if ...... else if .... else if .......' of heb jij toevallig nog andere oplossing. Gegroet
Je wilt dus de output van 'ls -l' parsen? Daar kan je een if .. else if .. etc constructie voor gebruiken maar je kan ook voor elk type 'file' een aparte rule gebruiken.
code:
1
2
3
4
$1 ~ /^l[-r]/ { printf "%s is een symbolic link\n", $8 }
$1 ~ /^d[-r]/ { printf "%s is een directory\n", $8 }
$1 ~ /^c[-r]/ { printf "%s is een character device file\n", $9 }
etc


Maar probeer ook eens:
code:
1
file *

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Topicstarter
Hmmzz thnx, ga ik eens effen proberen
Pagina: 1