Bash: dok čitate redak

Bash While Read Line

Kad radite na bash skriptama, ponekad ćete možda morati čitati datoteku redak po redak. Objasnimo primjerom. U tekstualnoj datoteci imate neke podatke koje bi trebalo izvršiti ili obraditi pomoću skripte. Dakle, pokretanje bash skripte za obradu tekstualne datoteke znatno je drugačije. Morate slijediti navedenu sintaksu za čitanje datoteke redak po redak. Ovaj članak će vam pomoći da pročitate redak iz datoteke pomoću while petlje u Bash -u.

Osnovna sintaksa retka while read

Sljedeća sintaksa koristi se za bash ljusku za čitanje datoteke pomoću while petlje:



dok čitati -rcrta;
čini
izbaciti 'linija $';
učinjeno <ulaz.datoteka

Opcija '-r' u gore spomenutoj sintaksi proslijeđena je naredbi za čitanje koja izbjegava tumačenje povratne kose crte. Opcija ‘input_file’ predstavlja naziv vaše datoteke kojoj želite pristupiti pomoću naredbe ‘read’.



Unutarnji razdjelnik polja skraćeno kao IFS može se koristiti prije nego što se naredba čitanja postavi na null niz koji sprječava skraćivanje početnog ili zadnjeg razmaka.



dok IFS=čitati -rcrta;
čini
izbaciti linija $;
učinjeno <ulaz.datoteka

Otvorite terminal pomoću prečaca Ctrl + Alt + t, a zatim pokrenite sljedeće naredbe na njemu.

Primjer # 1: Čitanje datoteke redak po redak

Uzmimo primjer u kojem pretpostavimo da imamo datoteku pod imenom OS.txt koja sadrži nazive svih važnih distribucija Linuxa. Ako želite čitati datoteku bez upotrebe naredbe 'cat', u tu svrhu možete izvršiti sljedeću naredbu za izvršavanje određenog zadatka. Koristit ćemo petlju while koja će čitati svaki redak iz datoteke OS.txt i pohranjivati ​​sadržaj u svakom koraku u promjenjivu liniju $ koju kasnije možete prikazati.

Zalijepite sljedeće nazive distribucija Linuxa u datoteku OS.txt



CentOS
Ubuntu
Debian
LinuxMint $dok čitaticrta;
čini
izbaciti linija $;
učinjeno <OS.txt


Iz gornje naredbe dobit ćete sljedeći odgovor u prozoru terminala:

Primjer 2: Čitanje datoteke pomoću bash skripte

Napravite bash datoteku, a zatim dodajte dolje navedeni kod u ovu datoteku kako biste pročitali sadržaj datoteke. Prethodnu tekstualnu datoteku možete pohraniti u novu varijablu $ filename, a varijabla $ n se koristi za zadržavanje vrijednosti svakog retka. Sada ćemo pomoću while petlje čitati svaki redak iz datoteke s određenim brojem retka.

#!/bin/bash
naziv datoteke='OS.txt'
n=1
dok čitaticrta;
čini
# za čitanje svakog retka
izbaciti 'Distribucijska linija OS br.$ n:linija $'
n= $((n+1))
učinjeno < $ naziv datoteke

Spremite datoteku s imenom OSinfo.sh i upišite sljedeću naredbu na terminalu da biste pokrenuli gornju bash skriptu.

$bashOSinfo.sh

Sada pokrenite naredbu cat za pregled izvornog sadržaja datoteke.

$mačkaOS.txt

Alternativna metoda za čitanje datoteka

Korištenje prosljeđivanja naziva datoteke iz naredbe

U bash datoteku morate dodati sljedeću skriptu koda. U ovoj skripti moramo uzeti naziv datoteke kao argument. Prvo, vrijednost argumenta čita varijabla $ 1 koja ima naziv datoteke za čitanje. Provjerit će postoji li naziv datoteke na navedenom mjestu, a zatim pomoću petlje while čita datoteku redak po redak slično prethodnom primjeru.

#!/bin/bash
naziv datoteke=1 USD
dok čitaticrta;čini
# čitanje svakog retka
izbaciti linija $
učinjeno < $ datoteku.txt

Spremite gornju skriptu s imenom 'Readline.sh' i izvedite sljedeću naredbu na terminalu za pokretanje gore spomenute skripte:

U gornjem ispisu primijetit ćete da datoteka 'OSinfo.txt' prolazi kao argument, a sadržaj 'OSinfo.txt' bit će prikazan nakon uklanjanja dodatnih razmaka. Izvorni sadržaj datoteke možete prikazati pokretanjem 'cat OSinfo.txt'.

Zaključak

U ovom smo članku raspravljali o tome kako čitati retke pomoću while petlje u bash programiranju. Implementirali smo različite metode pomoću bash skripte ili jednostavno možete koristiti tekstualnu datoteku za čitanje datoteke redak po redak. Ako ste zainteresirani saznati više primjera, onda pomoću gore navedene sintakse možete izvršiti i na svom sustavu. Nadam se da vam se svidio ovaj vodič i da će biti jedinstven za vas. Javimo u slučaju bilo kakve greške.