Hanyoyi daban-daban don Karanta Fayil a cikin rubutun Bash ta amfani da Madauki


Wannan labarin shine game da yadda ake karanta fayiloli a cikin rubutun bash ta amfani da madaidaicin lokaci. Karanta fayil ɗin aiki ne na gama gari a cikin shirye-shirye. Ya kamata ku saba da hanyoyi daban-daban kuma wace hanya ce ta fi dacewa don amfani. A cikin bash, ana iya samun aiki guda ɗaya ta hanyoyi da yawa amma koyaushe akwai hanya madaidaiciya don aiwatar da aikin kuma ya kamata mu bi shi.

Kafin ganin yadda ake karanta abubuwan fayil ta amfani yayin madauki, mai share fage kan yadda yayin aiki madauki yake aiki. Yayin da madauki ke kimanta wani yanayi kuma yana maimaita abin da aka bayar na lambobin lokacin da yanayin ya zama gaskiya.

while [ CONDITION ]
do
    code block
done

Bari mu ragargaje yayin tsara madaidaiciya.

  • yayin madaukai ya kamata farawa tare da ɗan lokaci kaɗan kalmar ta biyo baya da yanayi.
  • Yakamata a saka wani yanayi a cikin [] ko [[]]. Yanayin ya kamata koyaushe ya zama gaskiya don madaukin da za a zartar.
  • Za a sanya ainihin toshiyar lambar tsakanin aikatawa da aikatawa.

NUMBER=0

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

Wannan misali ne mai sauqi qwarai, inda madauki ke aiwatarwa har zuwa LAMBA bai fi 10 ba kuma ya buga bayanin amo.

Tare da yayin da zamu yi amfani da umarnin karantawa don karanta abubuwan da ke cikin layin fayil ta layi. Da ke ƙasa akwai rubutun yadda ake yin umarni da karanta su. Yanzu akwai hanyoyi daban-daban don wuce fayil ɗin azaman shigarwa kuma zamu gansu duka.

# SYNTAX
while read VARIABLE
do
    code
done

Bututu a cikin Linux

A yadda aka saba za mu yi amfani da irin, da sauransu.

Hakanan, zamuyi amfani da umarnin kyanwa anan don karanta abubuwan cikin fayil ɗin mu saka shi har zuwa wani ɗan madauki. Don zanga-zanga, Ina amfani da/etc/passwd amma ba kyau inyi rikici da wannan fayil din ba saboda haka dauki kwafin wannan fayil din kuyi wasa dashi idan kuna so.

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

Bari mu fasa abin da zai faru lokacin da aka ƙaddamar da lambar da ke sama.

  • cat/sauransu/passwd za su karanta abubuwan da ke cikin fayil ɗin kuma su wuce shi azaman shigar da shi ta cikin bututun.
  • karanta umarni yana karanta kowane layin da aka wuce azaman shigarwa daga umarnin cat kuma ya adana shi a cikin mai canza LREAD.
  • karanta umarni zai karanta abinda ke ciki har sai an fassara EOL.

Hakanan zaka iya amfani da wasu umarnin kamar kai, wutsiya, da bututun shi yayin madauki.

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

Canza Input a cikin Linux

Zamu iya tura abubuwan da ke cikin fayil din zuwa yayin madaukai ta amfani da mai ba da hanyar shigar da Input (<) .

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

Hakanan zaka iya adana sunan fayil ɗin zuwa mai canzawa kuma wuce shi ta hanyar mai gudanarwa.

FILENAME="/etc/passwd"

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

Hakanan zaka iya wuce sunayen fayiloli azaman hujja zuwa rubutunku.

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

Mai Rarraba Filin Cikin Gida

Kuna iya aiki tare da nau'ikan nau'ikan fayilolin fayil (CSV, TXT, JSON) kuma kuna so ku raba abubuwan cikin fayil ɗin dangane da ƙayyadaddun al'ada. A wannan yanayin, zaku iya amfani da\"Mai raba filin cikin gida (IFS)" don raba abubuwan cikin fayil ɗin kuma adana shi a cikin masu canji.

Bari in nuna yadda yake aiki. Kalli fayil din/etc/passwd wanda yake da hanjin (:) azaman mai iyaka. Yanzu zaku iya raba kowace kalma daga layi kuma adana ta cikin wani canji na daban.

A cikin misalin da ke ƙasa, Ina raba fayil/sauransu/passwd fayil tare da mallaka a matsayina na mai rabawa da adana kowane tsaga cikin masu canji daban-daban.

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

Na nuna layi daya kawai ya raba a cikin hoton hoton da ke sama saboda la'akari da girman hoto.

Layi mara fanko a cikin Linux

Ba a kula da layin wofi lokacin da kake latsewa ta cikin fayil ɗin. Don nuna wannan Na ƙirƙiri fayil ɗin samfurin tare da abubuwan da ke ƙasa. Akwai layi 4 da layuka marasa fanni, jagorancin sararin samaniya, bin sararin fari, haruffan shafi a layin 2, da wasu haruffan tserewa (\ n da\t).

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

Duba sakamakon, ba a kula da layin wofi. Hakanan, wani abin ban sha'awa don lura shine yadda ake datse fararen sarari ta hanyar umarnin karantawa. Hanya mai sauƙi don watsi da layin wofi yayin karanta abun cikin fayil shine amfani da afaretocin gwaji tare da tutar -z wanda ke bincika idan tsayin igiyar ba sifili. Yanzu bari mu maimaita misali ɗaya amma wannan lokacin tare da mai gwada gwaji.

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

Yanzu daga fitarwa, zaku iya ganin layin wofi ana watsi dasu.

Yan Cire Hali

Ba za a buga alamun tserewa kamar \n , \t , \c yayin karanta fayil. Don nuna wannan ina amfani da fayil ɗin samfurin guda ɗaya wanda ke da 'yan tsiraru haruffa.

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

Kuna iya gani daga haruffan tserewa fitarwa sun rasa ma'anar su kuma n da t kawai ake bugawa maimakon \n da \t . Kuna iya amfani da -r don hana fassarar koma baya.

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

Shi ke nan ga wannan labarin. Muna so mu ji daga gare ku idan akwai wani ra'ayoyi ko tukwici. Ra'ayoyin ku shine ke taimaka mana ƙirƙirar ingantaccen abun ciki. Ci gaba da karatu kuma ci gaba da tallafawa.