Toon posts:

[linux] Shell script

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil voor elke regel in een bestand iets doen. Ik dacht dus aan:

for LINE in `cat bestandje`; do echo $LINE; done

Maar dit doet iets voor elk woord in het bestandje. Doh.

Hoe los ik dit op en hoort deze posting in PW?

Verwijderd

Topicstarter
Ik heb nu dit:

while LINE=`head -n $I bestandje | tail -n 1`;

Verwijderd

Topicstarter
Bovenstaand scriptje gaat trouwens gewoon door na de laatste regel.

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 17-08 02:11
het is tijd voor:
man sed
man awk
have fun! :)

ach...in een volgend leven lach je er om!


  • The Source
  • Registratie: April 2000
  • Nu online
Zoiets?

for i in $(cut -f1 /root/bin/cat-script-domein.dat); do

doe je ding...

done
echo ready[/code]

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

code:
1
IFS=$(echo); for I in $(cat bestand); do echo "regel: $I"; done

Verwijderd

Topicstarter
Op zaterdag 02 februari 2002 01:07 schreef The Source het volgende:
Zoiets?

for i in $(cut -f1 /root/bin/cat-script-domein.dat); do

doe je ding...

done
echo ready
Dit werkt niet, doet het nog steeds per woord en niet per regel.

Verwijderd

Topicstarter
Op zaterdag 02 februari 2002 03:27 schreef deadinspace het volgende:
code:
1
IFS=$(echo); for I in $(cat bestand); do echo "regel: $I"; done
Dit werkt ook niet, de inhoud van het hele bestand wordt in I gestopt.

  • Asphyxion
  • Registratie: November 1999
  • Laatst online: 17:16

Asphyxion

I am, therefor I think

#!/bin/sh

while read var; do

echo "$var"

done < blaaat.txt


Waarbij 'var' 1 regel is/wordt en blaaat.txt het bestand dat gelezen wordt.

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:32

Super_ik

haklust!

[topic=390544]
precies het zelfde probleem ongeveer :)
probeer s `cat bestandje|wc -l` ;)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op zaterdag 02 februari 2002 11:42 schreef Sjord het volgende:
Dit werkt ook niet, de inhoud van het hele bestand wordt in I gestopt.
Hmja, $() sloopt de newline eraf... Nouja, als je een newline in IFS gefrot krijgt (met <ctrl-V><ctrl-I> lukt dat, maar netjes is anders) werkt het wel...

  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
en het is toch zo simpel... :)



for i in "$(cat file)"; do echo "${i}"; done

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:32

Super_ik

haklust!

Op zaterdag 02 februari 2002 19:58 schreef jeroen het volgende:
en het is toch zo simpel... :)



for i in "$(cat file|wc -l)"; do echo "${i}"; done

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Asphyxion
  • Registratie: November 1999
  • Laatst online: 17:16

Asphyxion

I am, therefor I think

Wat wil je met "wc -l"? wc -l geeft als output het aantal regels in de file, niet de output van de file zelf...

Die andere oplossing is eigenlijk een UUOC (aka Useless Use Of Cat). http://www.tuxedo.org/~esr/jargon/html/entry/UUOC.html

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 06-07 14:29
wc -l = aantal regels
dus, je moet het aantal regels en dan met head en tail de rest eraf knippen

head -n regelnummer|tail -n 1 geeft dan 1 regel als output

  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 17-02 12:22

zomertje

Barisax knorretje

Op zaterdag 02 februari 2002 19:58 schreef jeroen het volgende:
en het is toch zo simpel... :)



for i in "$(cat file)"; do echo "${i}"; done
werkt cat per regel dan? of kun je niet beter sed gebruiken? (zie topicvraag)

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 17-02 12:22

zomertje

Barisax knorretje

Op zaterdag 02 februari 2002 19:58 schreef jeroen het volgende:
en het is toch zo simpel... :)



for i in "$(cat file)"; do echo "${i}"; done
werkt cat per regel dan? of kun je niet beter sed gebruiken? (zie topicvraag)

ofofof geef je gewoon ff een voorbeeldje van een for lusje.... :P

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:32

Super_ik

haklust!

once again: [topic=390544]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
Op zaterdag 02 februari 2002 20:57 schreef Asphyxion het volgende:

Wat wil je met "wc -l"? wc -l geeft als output het aantal regels in de file, niet de output van de file zelf...



Die andere oplossing is eigenlijk een UUOC (aka Useless Use Of Cat). http://www.tuxedo.org/~esr/jargon/html/entry/UUOC.html
Mja.. een beetje gelijk heb je wel. Het kan ook zo;

while read bla
do echo "${bla}"; watjeverderwildoenmet ${bla}
done < jouwfile

  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
Op zaterdag 02 februari 2002 21:40 schreef zomer het volgende:



[..]



werkt cat per regel dan? of kun je niet beter sed gebruiken? (zie topicvraag)
Nee dat is allemaal overbodig. de for loop zal steeds de inhoud van 1 regel uit de file in $i proppen. de kunst is om dat tussen "" te doen, zodat niet ieder woord (gescheiden door spaties) maar iedere zin (gescheiden door een return) als 1 stuk gezien wordt.

Verwijderd

Zo dan?

cat /tmp/txt |while read line ; do echo $line ; done

Klaar...

[edit]Shit niet goed gelezen, stond hierboven ook al :(
Pagina: 1