Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Bestand inlezen met Bash  (gelezen 1937 keer)

Offline BailHope

  • Lid
    • Techneut
  • Steunpunt: Nee
Bestand inlezen met Bash
« Gepost op: 2008/07/20, 19:15:00 »
De bedoeling is dat de inhoud van een bepaald bestand "log.txt" wordt ingelezen. Daaruit moeten alle lijnen gefilterd worden die het woord "Completed" bevatten, en uit dat resultaat moet de laatste lijn gelezen worden.

Dit kan ik doen met onderstaande BASH code:
cat Folding/log.txt | grep Completed | tail -1Maar, als het programma dat dit logbestand aanmaakt niet draait, moet er een foutmelding op het scherm verschijnen. Makkelijk zat dacht ik, gewoon het resultaat in een variabele plaatsen en kijken of de variabele soms een lege string ("") bevat, maar bij het uitvoeren van onderstaande lijn krijg ik fouten:

$result = `cat Folding/FAHlog.txt | grep Completed | tail -1`Ik krijg onderstaande fout:
Citaat
./folding.sh: line 18: =: opdracht niet gevonden
Lijn 18 verwijst inderdaad naar bovenstaande code.

Kan iemand mij vooruit helpen met dit probleem aub?
Ubuntu user #12046
Mijn blog voor techneuten: http://techneut.wordpress.com
Voor de professionele IT'er: http://it-potato.blogspot.com

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Bestand inlezen met Bash
« Reactie #1 Gepost op: 2008/07/20, 19:40:54 »
geen $ bij het toewijzen van de variabele
en
geen spatie voor en achter de =

dus
result=`cat Folding/FAHlog.txt | grep Completed | tail -1`
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline BailHope

  • Lid
    • Techneut
  • Steunpunt: Nee
Bestand inlezen met Bash
« Reactie #2 Gepost op: 2008/07/20, 19:42:21 »
Dat werkt! Fantastisch.

Vreselijk dat ik daar zo lang zelf achter heb zitten zoeken.

Bedankt, profoX!
Ubuntu user #12046
Mijn blog voor techneuten: http://techneut.wordpress.com
Voor de professionele IT'er: http://it-potato.blogspot.com

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Bestand inlezen met Bash
« Reactie #3 Gepost op: 2008/07/20, 19:44:50 »
Je kan eerst testen of dat bestand bestaat, en afhankelijk van dat resultaat bepalen wat er moet gebeuren.
Voorbeeld:
if [  -e Folding/FAHlog.txt ]
        then
                result=`cat Folding/FAHlog.txt | grep Completed | tail -1`
                #andere dingen die je wil doen
               
        else
                echo "het bestand bestaat niet!"
                exit # of iets dergelijks
fi

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Bestand inlezen met Bash
« Reactie #4 Gepost op: 2008/07/20, 19:57:03 »
trouwens, onderstaande is een KLEIN beetje netter, want waarom een extra commando gebruiken wanneer dat niet nodig is?

result=`grep Completed Folding/FAHlog.txt | tail -1`
of
result=`tac Xorg.0.log|grep Success -m 1`

Beide versies zijn ongeveer even snel en zijn beide toch wel 2 keer sneller (volgens het commando time) dan cat + grep + tail... maar dat verschil is natuurlijk compleet verwaarloosbaar aangezien het om milliseconden gaat :P
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline BailHope

  • Lid
    • Techneut
  • Steunpunt: Nee
Bestand inlezen met Bash
« Reactie #5 Gepost op: 2008/07/20, 20:13:42 »
Het verschil is zeker niet verwaarloosbaar, want sneller is sneller wat mij betreft!
Bedankt voor de opmerking,
het was me in de man-pages van grep nooit opgevallen dat je een bestand kan meegeven, ik dacht dat je er enkel naartoe kon pipen. Bedankt! Weer iets bijgeleerd.
Ubuntu user #12046
Mijn blog voor techneuten: http://techneut.wordpress.com
Voor de professionele IT'er: http://it-potato.blogspot.com