Awọn ọna oriṣiriṣi lati Ka Faili ni Iwe afọwọkọ Bash Lilo Lakoko Yipo


Nkan yii jẹ gbogbo bi o ṣe le ka awọn faili ni awọn iwe afọwọkọ bash nipa lilo lupu igba diẹ. Kika faili kan jẹ iṣẹ ti o wọpọ ni siseto. O yẹ ki o faramọ pẹlu awọn ọna oriṣiriṣi ati ọna wo ni o munadoko lati lo. Ni bash, iṣẹ-ṣiṣe kan le ṣee ṣe ni ọpọlọpọ awọn ọna ṣugbọn ọna ti o dara julọ nigbagbogbo wa lati gba iṣẹ ṣiṣe ati pe o yẹ ki a tẹle.

Ṣaaju ki o to rii bi a ṣe le ka awọn akoonu faili ni lilo lakoko lupu, alakoko iyara lori bii lakoko ti lupu ṣiṣẹ. Lakoko ti lupu ṣe atunyẹwo ipo kan ati ṣe atunyẹwo lori ṣeto ti awọn koodu nigbati ipo naa jẹ otitọ.

while [ CONDITION ]
do
    code block
done

Jẹ ki a fọ lakoko iṣupọ lupu.

  • lakoko ti lupu yẹ ki o bẹrẹ pẹlu igba diẹ koko ti atẹle nipa ipo kan.
  • Ipo yẹ ki o wa ni pipade laarin [] tabi [[]]. Ipo naa yẹ ki o pada nigbagbogbo ni otitọ fun lupu lati wa ni pipa.
  • Apakan gangan ti koodu yoo gbe laarin ṣe ati ṣiṣe.

NUMBER=0

while [[ $NUMBER -le 10 ]]
do
    echo " Welcome ${NUMBER} times "
    (( NUMBER++ ))
done

Eyi jẹ apẹẹrẹ ti o rọrun pupọ, nibiti lupu ti ṣiṣẹ titi NỌMBA ko tobi ju 10 lọ ati tẹjade alaye iwoyi.

Pẹlú lakoko ti a yoo lo pipaṣẹ kika lati ka awọn akoonu ti laini faili nipasẹ laini. Ni isalẹ ni ilana sisọ ti bi lakoko ati kika awọn ofin ṣe papọ. Bayi awọn ọna oriṣiriṣi wa lati kọja faili bi kikọ sii ati pe a yoo rii gbogbo wọn.

# SYNTAX
while read VARIABLE
do
    code
done

Oniho ni Linux

Ni deede a yoo lo iru, ati bẹbẹ lọ.

Ni bakanna, a yoo lo aṣẹ ologbo nibi lati ka akoonu ti faili naa ati paipu rẹ si lupu igba diẹ. Fun ifihan, Mo n lo/ati be be lo/passwd faili ṣugbọn kii ṣe imọran lati dabaru pẹlu faili yii nitorinaa mu ẹda afẹyinti faili yii ki o mu ṣiṣẹ pẹlu rẹ ti o ba fẹ bẹ.

cat /etc/passwd | while read LREAD
do
    echo ${LREAD}
done

Jẹ ki a fọ ohun ti yoo ṣẹlẹ nigbati a ba fi koodu ti o wa loke silẹ.

  • ologbo/ati be be lo/passwd yoo ka awọn akoonu ti faili naa ki o kọja bi titẹ sii nipasẹ paipu naa.
  • ka aṣẹ ka ila kọọkan ti o kọja bi titẹwọle lati aṣẹ ologbo ati tọju rẹ ni oniyipada LREAD.
  • aṣẹ ka yoo ka awọn akoonu faili titi ti o fi tumọ EOL.

O tun le lo awọn ofin miiran bii ori, iru, ati paipu rẹ si lakoko yipo.

head -n 5 /etc/passwd | while read LREAD
do
    echo ${LREAD}
done

Idawọle Input ni Lainos

A le ṣe atunṣe akoonu ti faili si lakoko ti o lo nipa lilo onišẹ redirection Input (<) .

while read LREAD
do
    echo ${LREAD}
done < /etc/passwd | head -n 5

O tun le fi orukọ faili pamọ si oniyipada kan ki o kọja nipasẹ oluṣe redirection kan.

FILENAME="/etc/passwd"

while read LREAD
do
    echo ${LREAD}
done < ${FILENAME}

O tun le kọja awọn orukọ faili bi ariyanjiyan si iwe afọwọkọ rẹ.

while read LREAD
do
    echo ${LREAD}
done < $1 | head -n 5

Iyapa Aaye Inu

O le ṣiṣẹ pẹlu awọn oriṣi awọn ọna kika faili (CSV, TXT, JSON) ati pe o le fẹ pin awọn akoonu ti faili ti o da lori iyasọtọ aṣa. Ni ọran yii, o le lo\"Olupin aaye inu (IFS)" lati pin akoonu ti faili naa ki o tọju rẹ ni awọn oniyipada.

Jẹ ki n ṣe afihan bi o ṣe n ṣiṣẹ. Wo faili/ati be be lo/passwd eyiti o ni oluṣafihan (:) bi oluṣeto. O le bayi pin ọrọ kọọkan lati ila kan ki o tọju rẹ ni iyatọ lọtọ.

Ninu apẹẹrẹ ti isalẹ, Mo n pin/ati be be lo/passwd faili pẹlu oluṣaṣa bi ipinya mi ati titoju pipin kọọkan si awọn oniyipada oriṣiriṣi.

while IFS=":" read A B C D E F G
do
    echo ${A}
    echo ${B}
    echo ${C}
    echo ${D}
    echo ${E}
    echo ${F}
    echo ${G}
done < /etc/passwd

Mo ṣe afihan pipin laini kan ni sikirinifoto ti o wa loke n ṣakiyesi iwọn sikirinifoto.

Awọn Laini ofo ni Linux

Awọn ila ofo ko ni fiyesi nigbati o ba yipo nipasẹ akoonu faili naa. Lati ṣe afihan eyi Mo ti ṣẹda faili apẹẹrẹ pẹlu akoonu isalẹ. Awọn ila 4 wa ati awọn ila diẹ ti o ṣofo, aye funfun ti o nṣakoso, atẹle aaye funfun, awọn ohun kikọ taabu ni laini 2, ati diẹ ninu awọn kikọ abayọ ( ati).

while read LREAD
do
    echo ${LREAD}
done < testfile

Wo abajade, a ko fiyesi laini ofo. Pẹlupẹlu, ohun ti o nifẹ lati ṣe akiyesi ni bi a ṣe ge awọn alafo funfun nipasẹ aṣẹ kika. Ọna ti o rọrun lati foju awọn ila ofo nigbati o ba nka akoonu faili ni lati lo oluṣe idanwo pẹlu asia -z eyiti o ṣayẹwo boya gigun okun jẹ odo. Bayi jẹ ki a tun ṣe apẹẹrẹ kanna ṣugbọn ni akoko yii pẹlu oniṣe idanwo kan.

while read LREAD
do
    if [[ ! -z $LREAD ]]
    then
        echo ${LREAD} 
    fi
done < testfile

Bayi lati iṣẹjade, o le wo awọn ila ofo ti foju.

Sa ohun kikọ

Sa fun awọn ohun kikọ bii , ,

while read LREAD
do
    echo ${LREAD}
done < testfile

O le rii lati awọn kikọ abayọjade o wu ti padanu itumọ wọn ati pe n ati t nikan ni a tẹjade dipo ati . O le lo -r lati yago fun itumọ ifaseyin.

while read -r LREAD
do
    echo ${LREAD}
done < testfile

Iyẹn ni fun nkan yii. A yoo nifẹ lati gbọ lati ọdọ rẹ ti awọn ifaseyin tabi awọn imọran eyikeyi ba wa. Idahun rẹ ni ohun ti o ṣe iranlọwọ fun wa lati ṣẹda akoonu ti o dara julọ. Jeki kika ati tọju atilẹyin.