Hvordan lese kolonnedata fra en tekstfil i et bash shell -skript

Hvordan lese kolonnedata fra en tekstfil i et bash shell -skript

En av oppgavene som kan utføres ved hjelp av et bash shell -skript er å lese data fra en tekstfil og behandle dem. I denne artikkelen vil vi se på hvordan du kan lese en spesifikk kolonne med data fra en tekstfil eller hvordan du kan lese flere kolonner fra en tekstfil i et bash shell -skript.

Hvordan lese kolonnedata fra en tekstfil i et bash shell -skript

Å lese spesifikke kolonner med data fra en tekstfil i et bash shell -skript er godt med i forskjellige applikasjoner som i automatiserte repeterende oppgaver, programvareutvikling, tekststyring og mye mer, alt du trenger å gjøre er å bare lese den respektive kolonnen. For ytterligere illustrasjon under syntaksen som man kan følge for å lese hvilken som helst kolonne fra hvilken som helst tekstfil:

#!/bin/bash
mens du leser linjen; gjøre
# Bruk AWK for å trekke ut det tredje feltet (navnet) fra hver linje
= $ (Echo $ line | awk 'print $')
# Skriv ut navnet
ekko $
Ferdig < .tekst


1: Skriptet starter med å spesifisere skalltolk som skal brukes med Shebang -linjen #!/bin/bash.

2: Mens Loop leser innholdet i tekstfillinjen for linje, ved hjelp av lesekommandoen og for hver linje som leses, awk Kommando brukes til å trekke ut feltet (navnet) fra linjen. AWK -kommandoen bruker mønsteret Skriv ut $ For å velge feltet, som deretter lagres i variabelnavnet.

3: Til slutt skriver skriptet ut verdien til navnevariabelen ved hjelp av Echo -kommandoen, og denne prosessen gjentas for hver linje i filen til det ikke er flere linjer å lese.

For leserforståelse har jeg brukt ovennevnte syntaks for å lese en kolonne fra tekstfilen, og nedenfor er koden for den:

#!/bin/bash
mens du leser linjen; gjøre
# Bruk AWK for å trekke ut det andre feltet fra hver linje
info = $ (ekko $ linje | awk 'skriv ut $ 3')
# Skriv ut alderen
ekko $ info
Ferdig < company_details.txt


Her i koden har jeg lest den tredje kolonnen i hver linje i tekstfilen som heter firmadetaljer, AWK -kommandoen brukes til å trekke ut det tredje feltet (navnet) fra linjen. AWK -kommandoen bruker mønsteret Skriv ut $ 3 For å velge det tredje feltet, her er utdataene fra eksempelkoden min:


Nedenfor er tekstfilen som jeg opprettet for demonstrasjonsformål:

Hvordan lese flere kolonner i en tekstfil i bash shell -skript

Hvis du vil lese mer enn en kolonne eller en fil, så trenger du alt du trenger for å legge til kolonnenummeret, og resten er det samme, så her er koden for å lese mer enn en kolonne i tekstfilen:

#!/bin/bash
# Denne linjen spesifiserer at skriptet skal tolkes av bash -skallet.
# sløyfe gjennom hver linje i filen
mens du leser linjen; gjøre
# Bruk AWK for å trekke ut det tredje feltet (navnet) fra hver linje
info = $ (ekko $ linje | awk 'skriv ut $ 1, $ 2, $ 3')
# Skriv ut navnet
ekko $ info
Ferdig < company_details.txt


Nedenfor er utdataene fra koden som leser alle de tre kolonnene i tekstfilen:

Konklusjon

Bash-skriptene er et allsidig verktøy som kan brukes til å automatisere forskjellige oppgaver, spesielt når det gjelder UNIX-baserte systemer. Ved å kombinere mens Loop og andre Shell -kommandoer kan man enkelt lese kolonnedata fra en tekstfil og utføre forskjellige operasjoner med dataene.