Portál AbcLinuxu, 11. května 2025 23:28

Dotaz: Cteni textu radek po radku pomoci read "zere" posledni 0

10.3.2009 09:25 Jirik
Cteni textu radek po radku pomoci read "zere" posledni 0
Přečteno: 511×
Odpovědět | Admin

Dobry den,

mam takovy drobny problem. Kdyz chci cist line-by-line pres read tak mi z radku /lib/libcosik.0 udela /lib/libcosik.  , pritom kdyz /lib/libcosik.0 prepisu na /lib/libcosik.1 tak vse funguje jak ma.

Vi nekdo jak toto chovani obejit ?

Dekuji za pripadne odpovedi.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.3.2009 09:31 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyz chci cist line-by-line pres read tak mi z radku /lib/libcosik.0 udela /lib/libcosik. , pritom kdyz /lib/libcosik.0 prepisu na /lib/libcosik.1 tak vse funguje jak ma.

Mohl byste to trochu rozvést?

Mně tohle funguje bez problémů:

~$echo "/lib/libcosik.0" | ( read libname; echo $libname; )
/lib/libcosik.0
I am always ready to learn although I do not always like to be taught. (W. Churchill)
10.3.2009 09:41 Jirik
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0

Aaaah pardon!! zpusobil to spatny IFS . I kdyz nechapu proc. Pouzil jsem IFS=0x07 .0x07 jako netisknutelnou klavesu bell abych neprisel o zadne znaky. a ten mi to zahadne delal.

No ale v tom pripade mam jinou otazku. Jaky IFS mam dat aby mi read nechal pocatecni mezery a pritom neprisel o zadne znaky?

 

10.3.2009 09:53 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
No ale v tom pripade mam jinou otazku. Jaky IFS mam dat aby mi read nechal pocatecni mezery a pritom neprisel o zadne znaky?
Mňo, IFS & spol. je od toho, aby právě mezery likvidovalo :-). Pokud potřebujete s mezerami dál pracovat, tak bych na to nepoužíval shell jako takový, ale třeba AWK. Bez dalších informací těžko říct.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
10.3.2009 10:10 Jirik
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0

Noo mojim cilem je si nasypat do pole radky textu a jednoduseji nez pres read me to nenapadlo.

Problem take je ze to musim cpat z roury a ne ze znameho souboru.

no proste neco ve stylu

cat text | while read line

do

pole[$l]="$line"

(( l++ ))

done

10.3.2009 10:35 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
Noo mojim cilem je si nasypat do pole radky textu a jednoduseji nez pres read me to nenapadlo.

Tam jde spíš o to, co s tím bude dál (věřím, že tohle skutečný cíl není).

Jestli se s tím potom mají dělat nějaké složitější kejkle, je na místě zvážit, jestli je shell to pravé a není pohodlnější to udělat v PERLu nebo AWKu (podle toho, co ovládáte lépe).

Problem take je ze to musim cpat z roury a ne ze znameho souboru.

Tohle se tady řešilo před pár dny - bylo tam několik řešení.

Moje oblíbené:

cosi | (while read line; do
...
done;
...
);
I am always ready to learn although I do not always like to be taught. (W. Churchill)
10.3.2009 12:43 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
IFS prazdny
IFS=
while read line; do
...
done
If you hold a Unix shell up to your ear, you can you hear the C.
10.3.2009 12:44 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
A este ho mozno exportovat (ale nie som si isty, ci je to nutne)

export IFS=
If you hold a Unix shell up to your ear, you can you hear the C.
10.3.2009 18:35 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Cteni textu radek po radku pomoci read "zere" posledni 0
V tomto případě se myslím častěji hodí (YMMV) buď IFS "zálohovat", nebo
while IFS="" read line; do
...
done
aby původní IFS zůstala ve zbytku skriptu nedotčena, tedy ve výchozím, očekávaném stavu. Samozř. záleží případ od případu, ale měnit si proměnné prostředí (ekvivalent nařezávání si větve) globálně by se mohlo jednou vymstít.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.