Bash: skaitant eilutę

Bash While Read Line



Kai dirbate su „bash“ scenarijais, kartais gali tekti perskaityti failą eilute po eilutės. Paaiškinkime pavyzdžiu. Teksto faile turite tam tikrų duomenų, kurie turėtų būti vykdomi arba apdorojami naudojant scenarijų. Taigi „bash“ scenarijaus paleidimas teksto failui apdoroti yra labai skirtingas. Norėdami perskaityti failą eilute po eilutės, turite vadovautis nurodyta sintaksė. Šis straipsnis padės jums perskaityti eilutę iš failo naudojant „Bash“ ciklo ciklą.

Pagrindinė skaitymo eilutės sintaksė

Ši sintaksė naudojama „bash shell“, norint nuskaityti failą naudojant „loop“:







tuo tarpu skaityti -rlinija;
daryti
išmetė '$ eilutė';
padaryta <input.file

Parinktis „-r“ aukščiau minėtoje sintaksėje buvo perduota skaityti komandai, kuri neleidžia interpretuoti pasvirojo brūkšnio. Parinktis „input_file“ nurodė failo, kurį norite pasiekti naudodami „read“ komandą, pavadinimą.



Vidinį laukų atskyriklį, sutrumpintą kaip IFS, galima naudoti prieš nustatant skaitymo komandą į nulinę eilutę, kuri neleidžia sutrumpinti priekinio ar galinio tarpų.



tuo tarpu IFS=skaityti -rlinija;
daryti
išmetė $ eilutė;
padaryta <input.file

Atidarykite terminalą naudodami sparčiuosius klavišus „Ctrl“ + „Alt“ + t, tada paleiskite toliau nurodytas komandas.





1 pavyzdys: Failo skaitymas eilutėje

Paimkime pavyzdį, kuriame tarkime, kad turime failą OS.txt, kuriame yra visų svarbių „Linux“ platinimų pavadinimai. Jei norite skaityti failą nenaudodami komandos „cat“, šiuo tikslu galite atlikti šią komandą, kad atliktumėte konkrečią užduotį. Mes naudosime ciklą „while“, kuris skaitys kiekvieną eilutę iš failo OS.txt ir kiekviename žingsnyje saugo turinį kintamoje $ eilutėje, kurią galėsite rodyti vėliau.

Įklijuokite šiuos Linux distribucijų pavadinimus į OS.txt



„CentOS“
Ubuntu
Debian
„LinuxMint“tuo tarpu skaitytilinija;
daryti
išmetė $ eilutė;
padaryta <OS.txt


Iš aukščiau pateiktos komandos terminalo lange gausite tokį atsakymą:

2 pavyzdys: Failo skaitymas naudojant „bash“ scenarijų

Sukurkite „bash“ failą ir pridėkite toliau nurodytą kodą šiame faile, kad perskaitytumėte failo turinį. Galite išsaugoti ankstesnį teksto failą į naują kintamąjį $ failo pavadinimas, o kintamasis $ n naudojamas kiekvienos eilutės vertei išlaikyti. Dabar, naudodamiesi ciklu while, mes perskaitysime kiekvieną eilutę iš failo su tam tikru eilutės numeriu.

#!/bin/bash
failo pavadinimas=„OS.txt“
n=1
tuo tarpu skaitytilinija;
daryti
#, kad perskaitytumėte kiekvieną eilutę
išmetė „OS paskirstymo linija Nr.$ n:$ eilutė'
n= $((n+1))
padaryta < $ failo pavadinimas

Išsaugokite failą pavadinimu OSinfo.sh ir įveskite šią komandą terminale, kad paleistumėte aukščiau pateiktą „bash“ scenarijų.

$muštiOSinfo.sh

Dabar paleiskite komandą cat, kad pamatytumėte pradinį failo turinį.

$katėOS.txt

Alternatyvus failų skaitymo metodas

Naudojant perduodamą failo pavadinimą iš komandos

„Bash“ faile turite pridėti šį kodo scenarijų. Šiame scenarijuje kaip argumentą turime priimti failo pavadinimą. Pirma, argumento vertę skaito 1 USD kintamasis, kurio failo pavadinimas yra skaitomas. Ji patikrins, ar failo pavadinimas yra nurodytoje vietoje, tada naudodami ciklo ciklą nuskaito failą eilutėmis po eilutės, panašų į ankstesnį pavyzdį.

#!/bin/bash
failo pavadinimas=1 USD
tuo tarpu skaitytilinija;daryti
# skaito kiekvieną eilutę
išmetė $ eilutė
padaryta < $ failas.txt

Išsaugokite aukščiau esantį scenarijų pavadinimu „Readline.sh“ ir vykdykite šią komandą terminale, kad paleistumėte pirmiau minėtą scenarijų:

Aukščiau pateiktoje išvestyje pastebėsite, kad failas „OSinfo.txt“ perduodamas kaip argumentas, o pašalinus papildomų tarpų bus rodomas „OSinfo.txt“ turinys. Pradinį failo turinį galite rodyti paleisdami „cat OSinfo.txt“.

Išvada

Šiame straipsnyje aptarėme, kaip skaityti eilutes naudojant „bash“ programavimo ciklą while. Mes įdiegėme skirtingus metodus, naudodami „bash“ scenarijų, arba galite tiesiog naudoti tekstinį failą, norėdami perskaityti failo eilutę po eilutės. Jei norite sužinoti daugiau pavyzdžių, tada naudodami aukščiau nurodytą sintaksę galite atlikti ir savo sistemoje. Tikiuosi, kad jums patiko ši pamoka ir ji jums bus unikali. Pranešime apie bet kokią klaidą.