Bash: mens læst linje

Bash While Read Line



Når du arbejder med bash -scripts, skal du nogle gange læse en fil linje for linje. Lad os forklare med et eksempel. Du har nogle data i en tekstfil, der skal udføres eller behandles ved hjælp af et script. Så at køre et bash -script til at behandle en tekstfil er meget anderledes. Du skal følge en bestemt syntaks for at læse en fil linje for linje. Denne artikel hjælper dig med at læse en linje fra en fil ved hjælp af while -loop i Bash.

Grundlæggende syntaks for mens læst linje

Følgende syntaks bruges til bash shell til at læse en fil ved hjælp af while loop:







mens Læs -rlinje;
gøre
smed ud '$ linje';
Færdig <input.fil

Valgmuligheden '-r' i ovennævnte syntaks blev overført til læsningskommando, der undgår, at tilbagelænet undslipper fra at blive fortolket. Indstillingen 'input_file' har repræsenteret navnet på din fil, som du vil have adgang til ved hjælp af kommandoen 'read'.



Den interne feltseparator forkortet til IFS kan bruges, før read -kommandoen sættes til null -strengen, der forhindrer, at førende eller efterfølgende mellemrum trimmes.



mens IFS=Læs -rlinje;
gøre
smed ud $ linje;
Færdig <input.fil

Åbn terminalen ved hjælp af Ctrl + Alt + t genvej, og kør derefter følgende kommandoer på den.





Eksempel # 1: Fillæsning linje for linje

Lad os tage et eksempel, hvor vi antager, at vi har en fil med navnet OS.txt, der indeholder navnene på alle vigtige Linux -distributioner. Hvis du vil læse en fil uden at bruge kommandoen 'cat', kan du til dette formål udføre følgende kommando for at udføre den særlige opgave. Vi vil bruge while -løkken, der vil læse hver linje fra filen OS.txt og gemme indholdet i hvert trin i en variabel $ -linje, som du kan vise senere.

Indsæt følgende navne på Linux -distributioner i OS.txt



CentOS
Ubuntu
Debian
LinuxMint $mens Læslinje;
gøre
smed ud $ linje;
Færdig <OS.txt


Fra ovenstående kommando får du følgende svar på terminalvinduet:

Eksempel # 2: Læsning af fil ved hjælp af bash -scriptet

Opret en bash-fil, og tilføj derefter nedenstående kode i denne fil for at læse filindholdet. Du kan gemme den tidligere tekstfil i en ny variabel $ filnavn, og variabel $ n bruges til at beholde værdien af ​​hver linje. Nu, ved hjælp af while loop vil vi læse hver linje fra en fil med et bestemt linjenummer.

#!/bin/bash
filnavn='OS.txt'
n=1
mens Læslinje;
gøre
# for at læse hver linje
smed ud 'OS -distributionslinje nr.$ n:$ linje'
n= $((n+1))
Færdig < $ filnavn

Gem filen med navnet OSinfo.sh, og skriv følgende kommando på terminalen for at køre ovenstående bash -script.

$bashOSinfo.sh

Kør nu kommandoen cat for at se det originale filindhold.

$katOS.txt

Alternativ metode til fillæsning

Brug af passerende filnavn fra en kommando

I en bash -fil skal du tilføje følgende kodescript. I dette script skal vi tage et filnavn som et argument. Først læses værdien af ​​et argument af en $ 1 -variabel, som har et filnavn til læsning. Det vil kontrollere, at filnavnet findes på det angivne sted, og derefter bruge while -loopet til at læse en fil linje for linje, der ligner det foregående eksempel.

#!/bin/bash
filnavn=$ 1
mens Læslinje;gøre
# læser hver linje
smed ud $ linje
Færdig < $ fil.txt

Gem ovenstående script med navnet 'Readline.sh' og udfør følgende kommando på terminalen for at køre ovennævnte script:

I ovenstående output vil du observere, at filen 'OSinfo.txt' passerer som et argument, og indholdet af 'OSinfo.txt' vises efter fjernelse af ekstra mellemrum. Du kan vise det originale filindhold ved at køre 'cat OSinfo.txt'.

Konklusion

I denne artikel har vi diskuteret, hvordan man læser linjer ved hjælp af while -loop i bash -programmering. Vi har implementeret forskellige metoder ved hjælp af bash scriptet, eller du kan simpelthen bruge en tekstfil til at udføre læsning af en fil linje for linje opgave. Hvis du er interesseret i at lære flere eksempler, kan du også udføre ved hjælp af ovennævnte syntaks på dit system. Jeg håber, at du nød denne vejledning og ville være unik for dig. Lad os vide i tilfælde af fejl.