Bash For hver linje i en fil

Bash Each Line File



For -loop i Bash kan bruges med forskellige variationer til at udføre flere opgaver. En sådan variation er For hver linje i filen, der er ansvarlig for at læse alle linjerne i en fil. I denne artikel vil vi tale om metoder til brug for hver linje i filen i Bash.

Bemærk: Metoderne vist nedenfor er blevet demonstreret på Ubuntu 20.04. De fungerer dog også godt med enhver anden Linux -distribution.







Metoder til brug for hver linje i filen i Bash:

I disse metoder viser vi dig et eksempel, hvor du kan læse hver linje fra en fil, og derefter kan du enten vise den på terminalen, eller du kan endda gemme disse linjer i en anden fil. Lad os se på begge disse metoder.



Metode 1: Til visning af læselinjer på terminalen:

For at vise linjerne i en fil på terminalen ved hjælp af for hver linje i filen, skal du udføre følgende trin:



Trin # 1: Oprettelse af en dummy tekstfil:

Først og fremmest skal du oprette en tekstfil med nogle tilfældige data af hensyn til demonstrationen. Selvom denne tekstfil kan oprettes hvor som helst, anbefales det dog stærkt, at du opretter den i hjemmemappen. For at gøre det skal du klikke på ikonet Filhåndtering fremhævet på billedet nedenfor:





  • Oprettelse af en dummy tekstfil

    Højreklik nu hvor som helst i din hjemmemappe, og vælg indstillingen Nyt dokument i menuen, der vises. Vælg derefter indstillingen Tom dokument. Når et tomt dokument er blevet oprettet i din hjemmemappe, skal du angive det navn, du ønsker, for det efterfulgt af .txt -udvidelsen. I dette eksempel har vi navngivet det som ForEachLine.txt.

  • Oprettelse af en dummy tekstfil 2
    Dobbeltklik på denne tekstfil for at åbne den, og skriv derefter tilfældig tekst i den som vist på følgende billede. Når du har gjort dette, skal du gemme denne fil og lukke den.



  • Oprettelse af en dummy tekstfil 3

    Trin # 2: Oprettelse af Bash Script:

    Opret nu en Bash -fil på samme måde, som du har oprettet tekstfilen i hjemmemappen, bortset fra at du denne gang skal angive dens navn efterfulgt af .sh -udvidelsen i stedet for .txt -udvidelsen. Vi har navngivet vores Bash -fil som ForEachLine.sh, men du kan give den et hvilket som helst navn efter eget valg.
    Oprettelse af Bash Script

    Åbn denne fil ved at dobbeltklikke på den, og indtast derefter scriptet vist på billedet herunder i din nyoprettede Bash-fil. Her er den første linje der for at angive, at det følgende script er et Bash -script. Vi har simpelthen oprettet en variabel ved navn File og har tildelt navnet på vores tekstfil som dens værdi, dvs. ForEachLine.txt. Derefter har vi oprettet en variabel ved navn Lines og udlignet til $ (cat $ File). Her læser cat -kommandoen indholdet i vores tekstfil, og når der er et $ -symbol forud for det, vil indholdet, der læses af denne kommando, blive gemt i linjevariablen. På denne måde gemmes alle linjer i filen med navnet ForEachLine.txt i linjevariablen. Derefter har vi anvendt For -løkken, som har en iteratorlinje. Denne iterator fungerer på linjevariablen, som vi har oprettet ovenfor, og den gentager alle linierne én efter én. Derefter i den udførte blok har vi simpelthen vist alle disse linjer på terminalen ved at bruge ekkokommandoen.
    Oprettelse af Bash Script2

    Trin # 3: Kørsel af Bash Script:

    Start nu terminalen i Ubuntu 20.04, og kør derefter følgende kommando i den for at udføre Bash -scriptet, der er oprettet ovenfor:
    bash ForEachLine.sh
    Kører Bash Script

    Når denne kommando får bash -scriptet til at udføres, vil du være i stand til at se alle linjer i din tekstfil på din terminal som vist i følgende billede:
    Kører Bash Script

    Metode # 2: Til at gemme alle læselinjer i en anden fil:

    I denne metode har vi lidt ændret det Bash -script, der blev oprettet i metoden ovenfor for at gemme alle læselinjer i en ny tekstfil i stedet for at vise dem på terminalen. For at gøre dette skal du udføre nedenstående trin:

    Trin 1: Ændring af Bash Script oprettet ovenfor og kørsel af det:

    Åbn det Bash -script, du har oprettet i metoden ovenfor, og rediger det som vist på følgende billede. Vi har ganske enkelt tilføjet >> -symbolet efterfulgt af et nyt filnavn efter ekkokommandoen i den færdige blok. Denne ændring gemmer alle læselinjer i en ny tekstfil i stedet for at vise dem på terminalen. Kør nu Bash -scriptet igen via terminalen med bash -kommandoen efterfulgt af Bash -filnavnet. Denne gang, når Bash -scriptet kører, vil det oprette en ny tekstfil, hvis navn i dette tilfælde er NewFile.txt.
    Ændring af Bash Script oprettet ovenfor og kørsel af det 1

    Trin # 2: Adgang til den nyoprettede tekstfil:

    For at kontrollere, om alle læselinjer er gemt i den nye tekstfil, kan du ganske enkelt se indholdet af filen ved at køre følgende kommando i din terminal:
    kat NewFile.txt
    Adgang til den nyoprettede tekstfil
    Outputtet vist på billedet herunder vil sikre dig, at alle læselinjer er blevet kopieret til den nye tekstfil.
    Adgang til den nyoprettede tekstfil 2

    Konklusion:

    På denne måde kan du bruge hver linje i filen til at læse alle filernes linjer og derefter manipulere den med disse linjer. Vi har lige talt om de to grundlæggende scenarier i denne artikel, men du kan endda bruge denne loop til mere komplekse problemer.