Bash For hver linje i en fil

Bash Each Line File



For -løkken i Bash kan brukes med forskjellige varianter for å utføre flere oppgaver. En slik variant 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 bruk for hver linje i filen i Bash.

Merk: Metodene vist nedenfor har blitt demonstrert på Ubuntu 20.04. Imidlertid vil de også fungere godt med enhver annen Linux -distribusjon.







Metoder for bruk for hver linje i filen i Bash:

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



Metode 1: For visning av leselinjer på terminalen:

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



Trinn 1: Opprette en dummy tekstfil:

Først av alt må du lage en tekstfil med noen tilfeldige data for demonstrasjonens skyld. Selv om denne tekstfilen kan opprettes hvor som helst, anbefales det imidlertid sterkt at du oppretter den i Hjem -mappen. For å gjøre det, klikk på Filbehandling -ikonet uthevet i bildet nedenfor:





  • Opprette en dummy tekstfil

    Høyreklikk nå hvor som helst i startmappen og velg alternativet Nytt dokument fra menyen som vises. Velg deretter alternativet Tøm dokument. Når et tomt dokument er opprettet i Hjem -mappen, oppgir du navnet du ønsker for det etterfulgt av .txt -utvidelsen. I dette eksemplet har vi kalt det som ForEachLine.txt.

  • Opprette en dummy tekstfil 2
    Dobbeltklikk på denne tekstfilen for å åpne den, og skriv deretter inn tilfeldig tekst i den som vist på bildet nedenfor. Etter å ha gjort dette, lagre denne filen og lukk den.



  • Opprette en dummy tekstfil 3

    Trinn 2: Opprette Bash Script:

    Lag nå en Bash -fil på samme måte som du har opprettet tekstfilen i Hjem -mappen bortsett fra at denne gangen må du oppgi navnet etterfulgt av .sh -utvidelsen i stedet for .txt -utvidelsen. Vi har kalt Bash -filen vår som ForEachLine.sh, men du kan gi den et hvilket som helst navn du ønsker.
    Opprette Bash Script

    Åpne denne filen ved å dobbeltklikke på den og skriv deretter inn skriptet som vises på bildet nedenfor i den nyopprettede Bash-filen. Her er den første linjen der for å indikere at følgende script er et Bash -script. Vi har ganske enkelt opprettet en variabel som heter File og har tildelt den navnet på tekstfilen vår som verdien, det vil si ForEachLine.txt. Deretter har vi opprettet en variabel som heter Lines og utlignet den til $ (cat $ File). Her leser cat -kommandoen innholdet i tekstfilen vår, og når det går foran et $ -symbol, blir innholdet som blir lest av denne kommandoen lagret i linjevariabelen. På denne måten vil alle linjene i filen som heter ForEachLine.txt bli lagret i linjevariabelen. Deretter har vi brukt For -løkken som har en iterator -linje. Denne iteratoren fungerer på linjevariabelen som vi har opprettet ovenfor, og den vil gjenta gjennom alle linjene en etter en. Så i ferdigblokken har vi ganske enkelt vist alle disse linjene på terminalen ved å bruke ekkokommandoen.
    Opprette Bash Script2

    Trinn 3: Kjøre Bash Script:

    Start nå terminalen i Ubuntu 20.04 og kjør deretter følgende kommando i den for å utføre Bash -skriptet som ble opprettet ovenfor:
    bash ForEachLine.sh
    Kjører Bash Script

    Når denne kommandoen får bash -skriptet til å utføres, vil du kunne se alle linjene i tekstfilen på terminalen din som vist i følgende bilde:
    Kjører Bash Script

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

    I denne metoden har vi litt modifisert Bash -skriptet som ble 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 Bash -skriptet som er opprettet ovenfor og kjøre det:

    Åpne Bash -skriptet du har opprettet i metoden ovenfor, og endre det som vist på bildet nedenfor. Vi har ganske enkelt lagt til >> -symbolet etterfulgt av et nytt filnavn etter ekkokommandoen i ferdigblokken. Denne endringen lagrer 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 Bash -skriptet kjøres, vil det opprette en ny tekstfil hvis navn i dette tilfellet er NewFile.txt.
    Endre Bash Script opprettet ovenfor og kjøre det 1

    Trinn 2: Få tilgang til den nyopprettede tekstfilen:

    For å bekrefte om alle leselinjene er lagret i den nye tekstfilen, kan du ganske enkelt se innholdet i filen ved å kjøre følgende kommando i terminalen:
    katt NewFile.txt
    Få tilgang til den nyopprettede tekstfilen
    Utgangen som vises på bildet nedenfor, vil forsikre deg om at alle leselinjene er kopiert til den nye tekstfilen.
    Få tilgang til den nyopprettede tekstfilen 2

    Konklusjon:

    På denne måten kan du bruke hver linje i filen til å 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.