Bash: terwijl gelezen regel

Bash While Read Line



Wanneer u aan bash-scripts werkt, moet u soms een bestand regel voor regel lezen. Laten we het uitleggen met een voorbeeld. U hebt enkele gegevens in een tekstbestand die moeten worden uitgevoerd of verwerkt met behulp van een script. Het uitvoeren van een bash-script om een ​​tekstbestand te verwerken is dus heel anders. U moet een gespecificeerde syntaxis volgen om een ​​bestand regel voor regel te lezen. Dit artikel helpt je om een ​​regel uit een bestand te lezen met behulp van de while-lus in Bash.

Basissyntaxis van terwijl leesregel

De volgende syntaxis wordt gebruikt voor bash-shell om een ​​bestand te lezen met behulp van een while-lus:







terwijl lezen -Rlijn;
doen
gooide uit '$lijn';
gedaan <Invoer bestand

De optie '-r' in de bovengenoemde syntaxis doorgegeven aan leesopdracht die voorkomt dat de backslash wordt geïnterpreteerd. De optie 'input_file' heeft de naam vertegenwoordigd van uw bestand dat u wilt openen met behulp van de opdracht 'read'.



Het interne veldscheidingsteken, afgekort als IFS, kan worden gebruikt voordat het leescommando wordt ingesteld op de null-tekenreeks die voorkomt dat voorloop- of volgspaties worden bijgesneden.



terwijl IFS=lezen -Rlijn;
doen
gooide uit $lijn;
gedaan <Invoer bestand

Open de terminal met de sneltoets Ctrl + Alt + t en voer de volgende opdrachten erop uit.





Voorbeeld # 1: Bestand lezen regel voor regel

Laten we een voorbeeld nemen waarin we veronderstellen dat we een bestand met de naam OS.txt hebben dat de namen van alle belangrijke Linux-distributies bevat. Als u een bestand wilt lezen zonder het 'cat'-commando te gebruiken, kunt u voor dit doel het volgende commando uitvoeren om de specifieke taak uit te voeren. We zullen de while-lus gebruiken die elke regel uit het bestand OS.txt leest en de inhoud in elke stap opslaat in een variabele $regel die u later kunt weergeven.

Plak de volgende namen van Linux-distributies in OS.txt



CentOS
Ubuntu
Debian
LinuxMint $terwijl lezenlijn;
doen
gooide uit $lijn;
gedaan <OS.txt


Van de bovenstaande opdracht krijgt u het volgende antwoord in het terminalvenster:

Voorbeeld #2: Bestand lezen met het bash-script

Maak een bash-bestand en voeg vervolgens de onderstaande code toe aan dit bestand om de inhoud van het bestand te lezen. U kunt het vorige tekstbestand opslaan in een nieuwe variabele $filename en variabele $n wordt gebruikt om de waarde van elke regel te behouden. Nu zullen we met behulp van de while-lus elke regel uit een bestand met een bepaald regelnummer lezen.

#!/bin/bash
bestandsnaam='OS.txt'
N=1
terwijl lezenlijn;
doen
# voor lees elke regel
gooide uit 'OS-distributielijnnr.$n:$lijn'
N= $((n+1))
gedaan < $bestandsnaam

Sla het bestand op met de naam OSinfo.sh en typ de volgende opdracht op de terminal om het bovenstaande bash-script uit te voeren.

$bashOSinfo.sh

Voer nu de opdracht cat uit om de originele bestandsinhoud te bekijken.

$katOS.txt

Alternatieve methode voor het lezen van bestanden

Doorgeven van bestandsnaam van een commando

In een bash-bestand moet u het volgende codescript toevoegen. In dit script moeten we een bestandsnaam als argument nemen. Eerst wordt de waarde van een argument gelezen door een $1-variabele die een bestandsnaam heeft om te lezen. Het zal controleren of de bestandsnaam bestaat op de opgegeven locatie en vervolgens met behulp van de while-lus een bestand regel voor regel lezen, vergelijkbaar met het vorige voorbeeld.

#!/bin/bash
bestandsnaam=$ 1
terwijl lezenlijn;doen
# elke regel lezen
gooide uit $lijn
gedaan < $bestand.tekst

Sla het bovenstaande script op met de naam 'Readline.sh' en voer de volgende opdracht uit op de terminal om het bovengenoemde script uit te voeren:

In de bovenstaande uitvoer ziet u dat het bestand 'OSinfo.txt' als argument wordt doorgegeven en dat de inhoud van 'OSinfo.txt' wordt weergegeven na het verwijderen van extra spaties. U kunt de originele bestandsinhoud weergeven door 'cat OSinfo.txt' uit te voeren.

Conclusie

In dit artikel hebben we besproken hoe je regels kunt lezen met behulp van de while-lus in bash-programmering. We hebben verschillende methoden geïmplementeerd met behulp van het bash-script of u kunt eenvoudig een tekstbestand gebruiken om een ​​bestand regel voor regel te lezen. Als u geïnteresseerd bent om meer voorbeelden te leren, kunt u de bovengenoemde syntaxis ook op uw systeem uitvoeren. Ik hoop dat je deze tutorial leuk vond en uniek voor jou zou zijn. Laat het ons weten in geval van een fout.