Bash: mens du leser linje

Bash While Read Line



Når du jobber med bash -skript, må du noen ganger lese en fil linje for linje. La oss forklare med et eksempel. Du har noen data i en tekstfil som bør kjøres eller behandles ved hjelp av et skript. Så å kjøre et bash -skript for å behandle en tekstfil er mye annerledes. Du må følge en spesifisert syntaks for å lese en fil linje for linje. Denne artikkelen vil hjelpe deg med å lese en linje fra en fil ved å bruke mens -løkken i Bash.

Grunnleggende syntaks for mens du leser linjen

Følgende syntaks brukes for bash shell for å lese en fil med while loop:







samtidig som lese -rlinje;
gjøre
kastet ut '$ linje';
gjort <input.file

Alternativet '-r' i ovennevnte syntaks ble sendt til å lese kommando som unngår at tilbakeslagstreken slipper unna å bli tolket. Alternativet ‘input_file’ har representert navnet på filen du vil ha tilgang til ved å bruke ‘read’ -kommandoen.



Den interne feltseparatoren forkortet til IFS kan brukes før read -kommandoen settes til nullstrengen som forhindrer at ledende eller etterfølgende mellomrom trimmes.



samtidig som IFS=lese -rlinje;
gjøre
kastet ut $ linje;
gjort <input.file

Åpne terminalen ved hjelp av Ctrl + Alt + t snarvei og kjør deretter følgende kommandoer på den.





Eksempel # 1: Fillesing linje for linje

La oss ta et eksempel der vi antar at vi har en fil som heter OS.txt som inneholder navnene på alle viktige Linux -distribusjoner. Hvis du vil lese en fil uten å bruke kommandoen ‘cat’, kan du for dette formålet utføre følgende kommando for å utføre den aktuelle oppgaven. Vi bruker while -løkken som vil lese hver linje fra filen OS.txt og lagre innholdet i hvert trinn i en variabel $ -linje som du kan vise senere.

Lim inn følgende navn på Linux -distribusjoner i OS.txt



CentOS
Ubuntu
Debian
LinuxMint $samtidig som leselinje;
gjøre
kastet ut $ linje;
gjort <OS.txt


Fra kommandoen ovenfor får du følgende svar på terminalvinduet:

Eksempel # 2: Lese fil ved hjelp av bash -skriptet

Lag en bash-fil, og legg deretter til koden nedenfor i denne filen for å lese filinnholdet. Du kan lagre den forrige tekstfilen i en ny variabel $ filnavn og variabel $ n brukes til å beholde verdien på hver linje. Ved å bruke mens -løkken vil vi lese hver linje fra en fil med et bestemt linjenummer.

#!/bin/bash
filnavn='OS.txt'
n=1
samtidig som leselinje;
gjøre
# for å lese hver linje
kastet ut 'OS -distribusjonslinjenr.$ n:$ linje'
n= $((n+1))
gjort < $ filnavn

Lagre filen med navnet OSinfo.sh og skriv inn følgende kommando på terminalen for å kjøre bash -skriptet ovenfor.

$bashOSinfo.sh

Kjør nå cat -kommandoen for å se det originale filinnholdet.

$kattOS.txt

Alternativ metode for fillesing

Bruke passerende filnavn fra en kommando

I en bash -fil må du legge til følgende kodescript. I dette skriptet må vi ta et filnavn som et argument. Først leses verdien av et argument av en $ 1 -variabel som har et filnavn for lesing. Det vil sjekke at filnavnet eksisterer på det angitte stedet, og deretter bruke mens loopet leser en fil linje for linje som ligner på det forrige eksemplet.

#!/bin/bash
filnavn=$ 1
samtidig som leselinje;gjøre
# leser hver linje
kastet ut $ linje
gjort < $ fil.tekst

Lagre skriptet ovenfor med navnet 'Readline.sh' og utfør følgende kommando på terminalen for å kjøre skriptet ovenfor:

I utdataene ovenfor vil du se at filen 'OSinfo.txt' passerer som et argument, og innholdet i 'OSinfo.txt' vil bli vist etter at du har fjernet ekstra mellomrom. Du kan vise det originale filinnholdet ved å kjøre 'cat OSinfo.txt'.

Konklusjon

I denne artikkelen har vi diskutert hvordan du leser linjer ved hjelp av while -løkken i bash -programmering. Vi har implementert forskjellige metoder ved å bruke bash -skriptet, eller du kan ganske enkelt bruke en tekstfil til å utføre en filoppgave for å lese en fil. Hvis du er interessert i å lære flere eksempler, kan du bruke ovennevnte syntaks også på systemet ditt. Jeg håper du likte denne opplæringen og ville være unik for deg. Gi oss beskjed ved feil.