Läsa rader ur en textfil?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2006-05-23 14:48

Hur läser man rader ur en textfil, så att varje rad i textfilen blir en repeterande variabel?

Textfilen ser ut så här:

cat textfilen.txt
rad 1
rad 2
rad 3

Har testat med t.ex:

for x in "$(sed < textfilen.txt)"
do
echo "$x"
done

Men värdet på $x blir hela filens innehåll.

Jag har skrivit 10-tusentals rader shellscript. Men kommer inte på detta. Antingen har jag fått totalt hjärnsläpp eller så är jag dum i huvudet. Jag får välja själv

  • Medlem
  • International user
  • 2006-05-23 16:27

Jag hittade lite kod på nätet som fungerar. MEN jag fattar inte detta med 'exec' och 'filedescriptors' . Kan någon förklara?

FILE=$HOME/textfilen.txt

exec 3<&0
exec 0<$FILE

while read line 
do
echo $line
done

exec 0<&3

exit 0

Någon särskild anledning till att det måste göras i just shellscript? Känns ju som en given uppgift för perl eller ruby annars...

#!/usr/bin/env ruby

while line=ARGF.gets
  print line
end

alternativt:

#!/usr/bin/env ruby

open("testfil.txt") do |fd|
  print line while line = fd.gets
end
  • Medlem
  • International user
  • 2006-05-23 17:06
Ursprungligen av Samuel K:

Någon särskild anledning till att det måste göras i just shellscript? Känns ju som en given uppgift för perl eller ruby annars...

Det är ett shellscript (bash). Något annat språk är inte aktuellt för närvarande.

  • Medlem
  • International user
  • 2006-05-23 17:21

Det fanns ett helt vanligt och enkelt sätt att göra detta med bash (sh)

FILE=$HOME/textfilen.txt
while read line 
do
echo $line
done < $FILE

Utan jidder med exec och file descriptor. Muuhaaa. Nu går jag hem!

1
Bevaka tråden