Toon posts:

[AWK] probleem met greppen in bestand mbv awk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een file die ik cat en het resultaat daarvan stop ik in een awk commando. Ik wil op hetgene dat ik regel voor regel in het awk commando stop, greppen in een file. Dit lukt me echter niet. Ik gerbtuik het volgende commando

code:
1
2
3
4
5
6
7
8
9
10
file='filemetnamen'

cat bestand | awk '
                                    {

                                        print {
                                                grep $1 $file
                                              }

                                }'


Ik krijg echter de volgende foutcode(s):

code:
1
2
3
4
awk: cmd. line:5:                                       print {
awk: cmd. line:5:                                             ^ parse error
awk: cmd. line:9:                               }
awk: cmd. line:9:                               ^ parse error


Iemand een idee hoe ik dit op kan lossen? Ik kan helaas met de search niks vinden.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Ik heb geen idee waar je de gebruikte syntax vandaan gehaald hebt, want zo te zien klopt die van geen kant. En voer je dit gewoon uit, of is het een script, en waar is de #! regel? En je verhaal suggereert dat je iets op meerdere bestanden wil doen, waarom voer je het dan maar 1x uit, zonder loop of iets dergelijks.
Doet dit:
code:
1
for filename in `cat lijstmetnamen` ; do grep $1 $filename ; done
niet ongeveer wat je wil? Even een snelle oneliner voor het idee, het kan veel netter, maar dat terzijde :)

Verwijderd

Standaard gebruik ik een , (komma) bij het print commando van awk:
print "grep",$1,$file

Zo krijg ik bij ls | awk '{print "grep",$1,NF}' goede output.

Misschien dat dit helpt?

Maar jij wil op dat moment een grep doen/uitvoeren vanuit awk? :?
Of alleen printen?

edit:

of dit helpt misschien:

code:
1
2
3
4
cat bestand | while read iets
do
  grep $iets $file
done

[ Voor 24% gewijzigd door Verwijderd op 23-12-2004 12:37 ]


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 23 december 2004 @ 12:33:
Standaard gebruik ik een , (komma) bij het print commando van awk:
print "grep",$1,$file

Zo krijg ik bij ls | awk '{print "grep",$1,NF}' goede output.

Misschien dat dit helpt?

Maar jij wil op dat moment een grep doen/uitvoeren vanuit awk? :?
Of alleen printen?

edit:
of dit helpt misschien:

code:
1
2
3
4
cat bestand | while read iets
do
  grep $iets $file
done
Dit laaste lijkt me wel bruikbaar, bedankt ik ga het eens ff proberen!

Verwijderd

Je zou misschien dubbele quotes om $iets willen zetten om er zeker van te zijn dat je grep goed werkt.
Als je toeval 2 woorden op 1 regel heb, dan ga je daarmee problemen krijgen..
:)

Verwijderd

Topicstarter
lukt toch niet helemaal, ik probeer het volgende te bereiken:

Ik heb een file met meerdere namen erin, bv piet, jan kees en tinus. Deze namen kunnen in de bestanden a of b voorkomen. Nu wil ik dus het volgende, als de naam voorkomt in bestand a, dan wil ik een echo doen van een of andere string, als de naam voorkomt in bestand b, dan wil ik een andere echo doen, als het in geen van beiden bestanden voorkomt, zou ik een andere actie willen uitvoeren.

Ik dacht er met de voorgaande instructies uit te komen, maar dit is toch niet gelukt. helaas, misschien iemand die me nog een klein duwtje in de gode richting kan geven?

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 21:01

Kees

Serveradmin / BOFH / DoC
Als ik het zo zie kun je dat ook met 'cut -d" " -f1 > $tempfile; grep -F $tempfile $file' doen?

[ Voor 19% gewijzigd door Kees op 23-12-2004 14:22 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Verwijderd

Topicstarter
Kees schreef op donderdag 23 december 2004 @ 14:21:
Als ik het zo zie kun je dat ook met 'cut -d" " -f1 > $tempfile; grep -F $tempfile $file' doen?
Is dit in AWK ook mogelijk, het liefste zou ik namelijk een AWK oplossing verzinnen
Pagina: 1