Bash: în timp ce citiți linia

Bash While Read Line



Când lucrați la scripturi bash, uneori poate fi necesar să citiți un fișier rând cu rând. Să explicăm cu un exemplu. Aveți câteva date într-un fișier text care ar trebui executate sau procesate utilizând un script. Deci, rularea unui script bash pentru a procesa un fișier text este mult diferită. Trebuie să urmați o sintaxă specificată pentru a citi un fișier linie cu linie. Acest articol vă va ajuta să citiți o linie dintr-un fișier folosind bucla while din Bash.

Sintaxa de bază a liniei de citire

Următoarea sintaxă este utilizată pentru bash shell pentru a citi un fișier folosind while loop:







in timp ce citit -rlinia;
do
aruncat '$ linie';
Terminat <fișier de intrare

Opțiunea „-r” din sintaxa menționată mai sus a trecut pentru a citi comanda care evită ca barele oblice să nu fie interpretate. Opțiunea „input_file” a reprezentat numele fișierului dvs. la care doriți să accesați utilizând comanda „read”.



Separatorul de câmp intern abreviat ca IFS poate fi utilizat înainte ca comanda de citire să fie setată la șirul nul care împiedică tăierea spațiului alb principal sau final.



in timp ce IFS=citit -rlinia;
do
aruncat $ linie;
Terminat <fișier de intrare

Deschideți terminalul utilizând comanda rapidă Ctrl + Alt + t și apoi executați următoarele comenzi pe el.





Exemplul nr. 1: Citirea fișierului rând cu rând

Să luăm un exemplu în care să presupunem că avem un fișier numit OS.txt care conține numele tuturor distribuțiilor Linux importante. Dacă doriți să citiți un fișier fără a utiliza comanda „pisică” atunci, în acest scop puteți executa următoarea comandă pentru a efectua sarcina particulară. Vom folosi bucla while care va citi fiecare linie din fișierul OS.txt și va stoca conținutul în fiecare pas într-o linie $ variabilă pe care o puteți afișa mai târziu.

Lipiți următoarele nume de distribuții Linux în OS.txt



CentOS
Ubuntu
Debian
LinuxMint $in timp ce cititlinia;
do
aruncat $ linie;
Terminat <OS.txt


Din comanda de mai sus, veți primi următorul răspuns pe fereastra terminalului:

Exemplul # 2: Citirea fișierului utilizând scriptul bash

Creați un fișier bash și apoi adăugați codul menționat mai jos în acest fișier pentru a citi conținutul fișierului. Puteți stoca fișierul text anterior într-o nouă variabilă $ nume de fișier și variabila $ n este utilizată pentru a păstra valoarea fiecărei linii. Acum, folosind bucla while vom citi fiecare linie dintr-un fișier cu un anumit număr de linie.

#! / bin / bash
nume de fișier=„OS.txt”
n=1
in timp ce cititlinia;
do
# pentru citirea fiecărui rând
aruncat „Linia de distribuție a sistemului de operare nr.$ n:$ linie'
n= $((n +1))
Terminat < $ nume de fișier

Salvați fișierul cu un nume OSinfo.sh și tastați următoarea comandă pe terminal pentru a rula scriptul bash de mai sus.

$bashOSinfo.sh

Acum, executați comanda cat pentru a vizualiza conținutul fișierului original.

$pisicăOS.txt

Metodă alternativă pentru citirea fișierelor

Folosind numele fișierului de trecere dintr-o comandă

Într-un fișier bash, trebuie să adăugați următorul script de cod. În acest script, trebuie să luăm ca argument un nume de fișier. În primul rând, valoarea unui argument este citită de o variabilă de $ 1 care are un nume de fișier pentru citire. Acesta va verifica dacă numele fișierului există la locația specificată, apoi utilizând bucla while, citește un fișier linie cu linie similar cu exemplul anterior.

#! / bin / bash
nume de fișier=1 $
in timp ce cititlinia;do
# citind fiecare rând
aruncat $ linie
Terminat < $ fișier.txt

Salvați scriptul de mai sus cu numele ‘Readline.sh’ și executați următoarea comandă pe terminal pentru a rula scriptul menționat mai sus:

În rezultatul de mai sus, veți observa că fișierul „OSinfo.txt” trece ca argument și conținutul „OSinfo.txt” va fi afișat după eliminarea spațiilor suplimentare. Puteți afișa conținutul fișierului original executând „cat OSinfo.txt”.

Concluzie

În acest articol, am discutat despre modul de citire a liniilor folosind bucla while în programarea bash. Am implementat diferite metode folosind scriptul bash sau puteți utiliza pur și simplu un fișier text pentru a efectua citirea unui fișier linie cu linie. Dacă sunteți interesat să aflați mai multe exemple, atunci utilizând sintaxa menționată mai sus, puteți executa și pe sistemul dvs. Sper că ți-a plăcut acest tutorial și ai fi unic pentru tine. Spuneți-ne în caz de eroare.