Bash for hver linje i en fil

Bash for hver linje i en fil
"For" -sløyfen i bash kan brukes med forskjellige varianter for å utføre flere oppgaver. En slik variasjon er "for hver linje i filen" som er ansvarlig for å lese alle linjene i en fil. I denne artikkelen vil vi snakke om metodene for å bruke "for hver linje i fil" i bash.

Merk: Metodene vist nedenfor er påvist på Ubuntu 20.04. Imidlertid vil de også fungere godt med all annen Linux -distribusjon.

Metoder for å bruke "for hver linje i fil" i bash:

I disse metodene vil vi vise deg et eksempel der du kan lese hver linje fra en fil, og så kan du enten vise den på terminalen, eller du kan til og med lagre disse linjene i en annen fil. La oss se på begge disse metodene.

Metode 1: For å vise leselinjene på terminalen:

For å vise linjene i en fil på terminalen ved å bruke "For hver linje i fil", må du utføre følgende trinn:

Trinn 1: Opprette en dummy tekstfil:

Først av alt må du opprette en tekstfil med noen tilfeldige data for demonstrasjonenes skyld. Selv om denne tekstfilen kan opprettes hvor som helst, anbefales det imidlertid at du oppretter den i hjemmemappen. For å gjøre det, klikk på filbehandlerikonet som er fremhevet i bildet som er vist nedenfor:

  • Høyreklikk nå hvor som helst i hjemmemappen din og velg det nye dokumentalternativet fra menyen som vises. Velg deretter det tomme dokumentalternativet. Når et tomt dokument er opprettet i hjemmemappen din, må du oppgi navnet du velger for det etterfulgt av .txt -forlengelse. I dette eksemplet har vi kalt det som foreachline.tekst.


  • Dobbeltklikk på denne tekstfilen for å åpne den og skriv deretter inn en tilfeldig tekst i den som vist i følgende bilde. Etter å ha gjort dette, lagre denne filen og lukk den.

  • Trinn 2: Opprette Bash -skriptet:

    Lag nå en bash -fil på samme måte som du har opprettet tekstfilen i hjemmemappen, bortsett fra at du denne gangen må oppgi navnet etterfulgt av .sh -forlengelse i stedet for .txt -forlengelse. Vi har kalt bash -filen vår som foreachline.SH, men du kan gi det noe navn etter eget valg.

    Åpne denne filen ved å dobbeltklikke på den og skriv deretter skriptet som vises på bildet nedenfor i den nyopprettede bash-filen. Her er den første linjen der for å indikere at følgende skript er et bash -manus. Vi har ganske enkelt opprettet en variabel som heter "Fil" og har tildelt den navnet på tekstfilen vår som dens verdi i.e. Foreachline.tekst. Så har vi opprettet en variabel med navnet "Lines" og utlignet den til "$ (Cat $ File)". Her leser CAT -kommandoen innholdet i tekstfilen vår, og når den er inngått av et "$" -symbol, vil innholdet lest av denne kommandoen bli lagret i linjens variabel. På denne måten er alle linjene i filen som heter foreachline.TXT vil bli lagret i linjene varierende. Så har vi brukt "for" -sløyfen som har en iterator "linje". Denne iteratoren fungerer på "linjene" -variabelen som vi har opprettet ovenfor, og den vil iterere gjennom alle linjene en etter en. Så i "do-gjort" -blokken har vi ganske enkelt vist alle disse linjene på terminalen ved å bruke Echo-kommandoen.

    Trinn 3: Kjør Bash -skriptet:

    Start nå terminalen i Ubuntu 20.04 og kjør deretter følgende kommando i den for å utføre bashskriptet som er opprettet ovenfor:
    Bash foreachline.sh

    Når denne kommandoen vil lage bashskriptet for å utføre, vil du kunne se alle linjene i tekstfilen din på terminalen din som vist i følgende bilde:

    Metode nr. 2: For å lagre alle leselinjene i en annen fil:

    I denne metoden har vi litt modifisert bashskriptet som er opprettet i metoden ovenfor for å lagre alle leselinjene i en ny tekstfil i stedet for å vise dem på terminalen. For å gjøre dette, utfør trinnene som er nevnt nedenfor:

    Trinn 1: Endre bashptet som er opprettet over og kjører det:

    Åpne Bash -skriptet som du har laget i metoden over og endre det som vist i følgende bilde. Vi har ganske enkelt lagt til ">>" -symbolet etterfulgt av et nytt filnavn etter ekkokommandoen i "do-done" -blokken. Denne modifiseringen vil lagre alle leselinjene i en ny tekstfil i stedet for å vise dem på terminalen. Kjør nå bash -skriptet igjen via terminalen med bash -kommandoen etterfulgt av bash -filnavnet. Denne gangen når bashskriptet kjøres, vil det lage en ny tekstfil hvis navn i dette tilfellet er Newfile.tekst.

    Trinn 2: Få tilgang til den nyopprettede tekstfilen:

    For å bekrefte om alle “leste” linjene er lagret i den nye tekstfilen, kan du ganske enkelt se innholdet i den filen ved å kjøre følgende kommando i terminalen din:
    Cat Newfile.tekst

    Utgangen vist på bildet nedenfor vil forsikre deg om at alle leselinjene er kopiert til den nye tekstfilen.

    Konklusjon:

    På denne måten kan du benytte deg av "For hver linje i filen" for å lese alle linjene i en fil og deretter manipulere den med disse linjene. Vi har nettopp snakket om de to grunnleggende scenariene i denne artikkelen, men du kan til og med bruke denne sløyfen til mer komplekse problemer.