Bash: medan du läser raden

Bash While Read Line



När du arbetar med bash -skript kan du ibland behöva läsa en fil rad för rad. Låt oss förklara med ett exempel. Du har en del data i en textfil som ska köras eller bearbetas med ett skript. Så att köra ett bash -skript för att bearbeta en textfil är mycket annorlunda. Du måste följa en specificerad syntax för att läsa en fil rad för rad. Den här artikeln hjälper dig att läsa en rad från en fil med medan loop i Bash.

Grundläggande syntax för medan läst rad

Följande syntax används för bash shell för att läsa en fil med while loop:







medan läsa -rlinje;
do
kastade ut '$ rad';
Gjort <indatafil

Alternativet '-r' i ovannämnda syntax skickades till läskommando som undviker att backslashen undviker att tolkas. Alternativet 'input_file' har representerat namnet på din fil som du vill komma åt med kommandot 'read'.



Den interna fältavskiljaren förkortad till IFS kan användas innan läskommandot sätts till nollsträngen som förhindrar att ledande eller efterföljande blanksteg trimmas.



medan IFS=läsa -rlinje;
do
kastade ut $ rad;
Gjort <indatafil

Öppna terminalen med Ctrl + Alt + t genväg och kör sedan följande kommandon på den.





Exempel # 1: Filavläsning rad för rad

Låt oss ta ett exempel där vi antar att vi har en fil med namnet OS.txt som innehåller namnen på alla viktiga Linux -distributioner. Om du vill läsa en fil utan att använda kommandot ‘cat’ kan du för detta ändamål utföra följande kommando för att utföra den specifika uppgiften. Vi kommer att använda while -slingan som läser varje rad från filen OS.txt och lagrar innehållet i varje steg i en variabel $ -rad som du kan visa senare.

Klistra in följande namn på Linux -distributioner i OS.txt



CentOS
Ubuntu
Debian
LinuxMint $medan läsalinje;
do
kastade ut $ rad;
Gjort <OS.txt


Från kommandot ovan får du följande svar i terminalfönstret:

Exempel # 2: Läser fil med bash -skriptet

Skapa en bash-fil och lägg sedan till koden nedan för att läsa filinnehållet. Du kan lagra den tidigare textfilen i en ny variabel $ filnamn och variabel $ n används för att behålla värdet på varje rad. Med hjälp av medan loop kommer vi att läsa varje rad från en fil med ett visst radnummer.

#!/bin/bash
filnamn='OS.txt'
n=1
medan läsalinje;
do
# för att läsa varje rad
kastade ut 'OS -distributionslinje nr.$ n:$ rad'
n= $((n+1))
Gjort < $ filnamn

Spara filen med namnet OSinfo.sh och skriv följande kommando på terminalen för att köra ovanstående bash -skript.

$våldsamt slagOSinfo.sh

Kör nu kommandot cat för att visa det ursprungliga filinnehållet.

$kattOS.txt

Alternativ metod för filläsning

Använda passande filnamn från ett kommando

I en bash -fil måste du lägga till följande kodskript. I det här skriptet måste vi ta ett filnamn som ett argument. Först läses värdet av ett argument av en $ 1 -variabel som har ett filnamn för läsning. Det kommer att kontrollera att filnamnet existerar på den angivna platsen och sedan använda medan loopet läser en fil rad för rad liknande det föregående exemplet.

#!/bin/bash
filnamn=$ 1
medan läsalinje;do
# läser varje rad
kastade ut $ rad
Gjort < $ fil.Text

Spara ovanstående skript med namnet ‘Readline.sh’ och kör följande kommando på terminalen för att köra ovan nämnda skript:

I ovanstående utdata kommer du att observera att filen 'OSinfo.txt' passerar som ett argument och innehållet i 'OSinfo.txt' kommer att visas efter att extra mellanslag har tagits bort. Du kan visa det ursprungliga filinnehållet genom att köra 'cat OSinfo.txt'.

Slutsats

I den här artikeln har vi diskuterat hur man läser rader med medan loop i bash programmering. Vi har implementerat olika metoder med hjälp av bash -skriptet eller så kan du helt enkelt använda en textfil för att läsa en fil rad för rad -uppgift. Om du är intresserad av att lära dig fler exempel kan du använda ovanstående syntax också på ditt system. Jag hoppas att du gillade denna handledning och skulle vara unik för dig. Låt oss veta i händelse av något fel.