Bash: rida lugedes

Bash While Read Line

Kui töötate bash -skriptidega, peate mõnikord faili rida -realt lugema. Selgitame näitega. Teil on tekstifailis mõned andmed, mis tuleks skripti abil käivitada või töödelda. Seega on bashi skripti käitamine tekstifaili töötlemiseks palju erinev. Faili rida -realt lugemiseks peate järgima määratud süntaksit. See artikkel aitab teil lugeda rida failist, kasutades Bashi loopi.

Loetud rea põhisüntaks

Järgmist süntaksit kasutatakse bash shelli jaoks faili lugemiseks loopi kasutades:



samas loe -rrida;
teha
viskas välja '$ rida';
tehtud <input.file

Eespool nimetatud süntaksi valik „-r” edastati lugemiskäsule, mis väldib tagasilöögi tõlgendamist. Valik „input_file” on näidanud teie faili nime, millele soovite käsu „lugemine” abil juurde pääseda.



Sisemist väljade eraldajat, lühendatult IFS -i, saab kasutada enne, kui lugemiskäsk on seatud nullstringile, mis takistab tühikute tühistamist kärpimisel.



samas IFS=loe -rrida;
teha
viskas välja $ rida;
tehtud <input.file

Avage terminal, kasutades kiirklahvi Ctrl + Alt + t ja käivitage sellel järgmised käsud.

Näide # 1: Faili lugemine rida -realt

Võtame näite, milles oletame, et meil on fail nimega OS.txt, mis sisaldab kõigi oluliste Linuxi distributsioonide nimesid. Kui soovite faili lugeda ilma käsku „kass” kasutamata, saate sel eesmärgil konkreetse ülesande täitmiseks täita järgmise käsu. Kasutame while -tsüklit, mis loeb failist OS.txt iga rea ​​välja ja salvestab sisu igal sammul muutuvas $ reas, mida saate hiljem kuvada.

Kleepige järgmised Linuxi distributsioonide nimed faili OS.txt



CentOS
Ubuntu
Debian
LinuxMint $samas loerida;
teha
viskas välja $ rida;
tehtud <OS.txt


Ülaltoodud käsust saate terminaliaknas järgmise vastuse:

Näide # 2: faili lugemine bash -skripti abil

Looge bash-fail ja lisage faili sisu lugemiseks sellesse faili allpool nimetatud kood. Eelmise tekstifaili saate salvestada uude muutujale $ failinimi ja muutujat $ n kasutatakse iga rea ​​väärtuse säilitamiseks. Nüüd, kasutades loopi, loeme iga rea ​​failist, millel on konkreetne reanumber.

#!/bin/bash
faili nimi=„OS.txt”
n=1
samas loerida;
teha
# iga rea ​​lugemiseks
viskas välja „OS -i jaotusliin nr.$ n:$ rida'
n= $((n+1))
tehtud < $ failinimi

Salvestage fail nimega OSinfo.sh ja tippige terminalis järgmine käsk, et käivitada ülaltoodud bash -skript.

$löömaOSinfo.sh

Nüüd käivitage algse faili sisu vaatamiseks käsk cat.

$kassOS.txt

Alternatiivne meetod failide lugemiseks

Faili nime edastamise kasutamine käsust

Bash -failis peate lisama järgmise koodiskripti. Selle skripti puhul peame argumendiks võtma failinime. Esiteks loeb argumendi väärtuse muutuja $ 1, millel on lugemiseks failinimi. See kontrollib, kas failinimi on määratud asukohas olemas, ja loeb samal ajal loopi abil faili rida -realt sarnaselt eelmisele näitele.

#!/bin/bash
faili nimi=$ 1
samas loerida;teha
# iga rea ​​lugemine
viskas välja $ rida
tehtud < $ fail.txt

Salvestage ülaltoodud skript nimega „Readline.sh” ja täitke terminalis järgmine käsk ülalnimetatud skripti käivitamiseks:

Ülaltoodud väljundis näete, et fail „OSinfo.txt” edastatakse argumendina ja faili „OSinfo.txt” sisu kuvatakse pärast täiendavate tühikute eemaldamist. Faili algse sisu kuvamiseks käivitage käsk „cat OSinfo.txt”.

Järeldus

Selles artiklis oleme arutanud, kuidas lugeda ridu, kasutades bash -programmeerimisel while -tsüklit. Oleme rakendanud bash -skripti kasutades erinevaid meetodeid või saate lihtsalt tekstifaili abil rida -realt ülesannet lugeda. Kui soovite rohkem näiteid õppida, saate ülaltoodud süntaksi abil oma süsteemis ka käivitada. Loodan, et teile meeldis see õpetus ja see oleks teie jaoks ainulaadne. Mis tahes vea korral anname teada.