Bash: habang binabasa ang linya

Bash While Read Line



Kapag nagtatrabaho ka sa mga bash script, minsan maaaring kailanganin mong basahin ang isang linya ng file sa pamamagitan ng linya. Ipaliwanag natin sa isang halimbawa. Mayroon kang ilang data sa isang text file na dapat na ipatupad o maproseso sa pamamagitan ng paggamit ng isang script. Kaya, ang pagpapatakbo ng isang bash script upang maproseso ang isang file ng teksto ay ibang-iba. Kailangan mong sundin ang isang tinukoy na syntax upang mabasa ang isang linya ng file sa pamamagitan ng linya. Tutulungan ka ng artikulong ito na basahin ang isang linya mula sa isang file gamit ang habang loop sa Bash.

Pangunahing Syntax ng habang binabasa ang linya

Ang sumusunod na syntax ay ginagamit para sa bash shell upang mabasa ang isang file gamit ang habang loop:







habang basahin -rlinya;
gawin
itinapon '$ linya';
tapos na <input.file

Ang pagpipiliang '-r' sa nabanggit na syntax ay ipinasa upang basahin ang utos na maiiwasan ang pag-makatakas ng backslash mula sa bigyang kahulugan. Ang pagpipiliang 'input_file' ay kumakatawan sa pangalan ng iyong file na nais mong i-access sa pamamagitan ng paggamit ng 'basahin' na utos.



Ang panloob na tagapaghiwalay ng patlang na pinaikling bilang IFS ay maaaring magamit bago ang nabasa na utos ay nakatakda sa null string na pumipigil sa pag-trim o pag-trailing ng whitespace na mai-trim.



habang IFS=basahin -rlinya;
gawin
itinapon $ linya;
tapos na <input.file

Buksan ang terminal gamit ang Ctrl + Alt + t shortcut at pagkatapos ay patakbuhin ang mga sumusunod na utos dito.





Halimbawa # 1: Pagbabasa ng File ng linya sa pamamagitan ng linya

Kumuha tayo ng isang halimbawa kung saan kunwari mayroon kaming isang file na pinangalanang OS.txt na naglalaman ng mga pangalan ng lahat ng mahahalagang pamamahagi ng Linux. Kung nais mong basahin ang isang file nang hindi gumagamit ng 'cat' na utos pagkatapos, para sa hangaring ito maaari mong maisagawa ang sumusunod na utos upang maisagawa ang partikular na gawain. Gagamitin namin ang habang loop na babasahin ang bawat linya mula sa file OS.txt at iimbak ang nilalaman sa bawat hakbang sa isang variable na $ line na maaari mong ipakita sa ibang pagkakataon.

I-paste ang mga sumusunod na pangalan ng pamamahagi ng Linux sa OS.txt



CentOS
Ubuntu
Debian
LinuxMint $habang basahinlinya;
gawin
itinapon $ linya;
tapos na <OS.txt


Mula sa utos sa itaas, makakakuha ka ng sumusunod na tugon sa window ng terminal:

Halimbawa # 2: Pagbasa ng file gamit ang bash script

Lumikha ng isang bash file at pagkatapos ay idagdag ang nabanggit na code sa file na ito upang mabasa ang nilalaman ng file. Maaari mong iimbak ang nakaraang file ng teksto sa isang bagong variable na $ filename at variable na $ n ang ginagamit upang mapanatili ang halaga ng bawat linya. Ngayon, gamit ang habang loop babasahin namin ang bawat linya mula sa isang file na may isang partikular na numero ng linya.

#! / baseng / bash
filename='OS.txt'
n=1
habang basahinlinya;
gawin
# para basahin ang bawat linya
itinapon 'Linya ng pamamahagi ng OS blg.$ n:$ linya'
n= $((n +1))
tapos na < $ filename

I-save ang file na may isang pangalan na OSinfo.sh at i-type ang sumusunod na utos sa terminal upang patakbuhin ang nasa itaas na bash script.

$bashOSinfo.sh

Ngayon, patakbuhin ang utos ng pusa upang matingnan ang orihinal na nilalaman ng file.

$pusaOS.txt

Alternatibong Paraan para sa pagbabasa ng file

Paggamit ng pagpasa ng pangalan ng file mula sa isang utos

Sa isang bash file, kailangan mong idagdag ang sumusunod na script script. Sa script na ito, kailangan naming kumuha ng isang filename bilang isang pagtatalo. Una, ang halaga ng isang argument ay binabasa ng isang variable na $ 1 na may isang filename para sa pagbabasa. Susuriin nito na ang filename ay umiiral sa tinukoy na lokasyon pagkatapos ay gamit ang habang loop binabasa nito ang isang linya ng file sa pamamagitan ng linya na katulad ng nakaraang halimbawa.

#! / baseng / bash
filename=$ 1
habang basahinlinya;gawin
# pagbabasa ng bawat linya
itinapon $ linya
tapos na < $ file.txt

I-save ang script sa itaas na may pangalang 'Readline.sh' at ipatupad ang sumusunod na utos sa terminal upang mapatakbo ang nabanggit na script:

Sa output sa itaas, mapapansin mo na ang file na 'OSinfo.txt' ay dumadaan bilang isang argument at ang nilalaman ng 'OSinfo.txt' ay ipapakita pagkatapos alisin ang labis na mga puwang. Maaari mong ipakita ang orihinal na nilalaman ng file sa pamamagitan ng pagpapatakbo ng 'cat OSinfo.txt'.

Konklusyon

Sa artikulong ito, tinalakay namin kung paano basahin ang mga linya gamit ang habang loop sa bash program. Nagpatupad kami ng iba't ibang mga pamamaraan gamit ang bash script o maaari mo lamang gamitin ang isang file ng teksto upang maisagawa ang pagbabasa ng isang linya ng file sa pamamagitan ng gawain sa linya. Kung interesado kang matuto nang higit pang mga halimbawa pagkatapos ay ang paggamit ng nabanggit na syntax maaari ka ring magpatupad sa iyong system. Inaasahan kong nasiyahan ka sa tutorial na ito at magiging kakaiba para sa iyo. Alamin natin kung sakaling may anumang error.