Shell Scripting Tutorial for Beginners 17 - Read a file content in Bash
Innholdsfortegnelse:
- Lese en fil linje for linje syntaks
- Lese en fil linje for linje-eksempler
- Alternative metodelesemetoder
- Bruke en prosesserstatning
- Bruke en her streng
- Ved hjelp av filbeskrivelse
- Konklusjon
Når du skriver Bash-skript, vil du noen ganger befinne deg i situasjoner der du trenger å lese en fil linje for linje. For eksempel kan du ha en tekstfil som inneholder data som skal behandles av skriptet.
I denne opplæringen skal vi diskutere hvordan du kan lese en fil linje for linje i Bash.
Lese en fil linje for linje syntaks
Den mest generelle syntaks for å lese en fil linje for linje er som følger:
while IFS= read -r line do echo "$line" done < input_file
eller den tilsvarende versjonen av en linje:
while IFS= read -r line; do echo $line; done < input_file
Hvordan virker det?
Input-filen (
input_file
) er navnet på filen du vil være åpen for lesing av
read
kommandoen.
read
kommandoen leser filen linje for linje og tilordner hver linje til linjevariabelen. Når alle linjer er behandlet, avsluttes loopen. Den interne feltutskilleren (
IFS
) er satt til nullstrengen for å bevare ledende og etterfølgende hvitrom som er standardoppførselen til
read
kommandoen.
Lese en fil linje for linje-eksempler
La oss se på følgende eksempel. Anta at vi har en fil som heter
distros.txt
inneholder en liste over noen av de mest populære Linux-distribusjonene og pakkehåndteringene deres atskilt med komma (
,
):
Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf
For å lese filen linje for linje kjører du følgende kode i terminalen din:
while IFS= read -r line do echo "$line" done < distros.txt
Koden vil lese filen etter linje, tilordne hver linje til en variabel og gjenkjenne variabelen. Grunnleggende vil du se den samme utdata som om du ville vise filinnholdet ved å bruke kommandoen katt.
Hva om du bare vil skrive ut distribusjonene som bruker apt? En måte ville være å bruke if-setningen og sjekke om linjen inneholder den passende substring:
while IFS= read -r line do if]; then echo "$line" fi done < distros.txt
Ubuntu, apt Debian, apt
Når du leser fil linje for linje, kan du også sende mer enn en variabel til lese-kommandoen som vil dele linjen i felt basert på
IFS
. Det første feltet er tilordnet den første variabelen, det andre til den andre variabelen, og så videre. Hvis det er flere felt enn variabler, tildeles restfeltene til den siste variabelen.
I det følgende eksemplet setter vi IFS til et komma (
,
) og sender to variabler
distro
og
pm
til lese-kommandoen. Alt fra begynnelsen av linjen til det første komma blir tilordnet den første variabelen (
distro
) og resten av linjen vil bli tilordnet den andre variabelen (
pm
):
while IFS=, read -r distro pm do echo "$pm" is the package manager for "$distro" done < distros.txt
apt is the package manager for Ubuntu apt is the package manager for Debian yum is the package manager for CentOS pacman is the package manager for Arch Linux dnf is the package manager for Fedora
Alternative metodelesemetoder
Bruke en prosesserstatning
Prosessubstitusjon lar deg sende utdata fra kommandoen som filnavn:
while IFS= read -r line do echo "$line" done < <(cat input_file)
Bruke en her streng
Here String er en variant av Here-dokument. Strengen
(cat input_file)
vil beholde nylinjene:
while IFS= read -r line do echo "$line" done <<< $(cat input_file)
Ved hjelp av filbeskrivelse
Du kan også gi inndata til loopen ved hjelp av en filbeskrivelse:
while IFS= read -r -u9 line do echo "$line" done 9< input_file
Når du arbeider med filbeskrivelser, bruk et tall mellom 4 og 9 for å unngå konflikt med interne filbeskrivere.
Konklusjon
I Bash kan vi lese en fil linje for linje ved å gi filnavnet som inngang til en mens mens du leser loopen.
bash terminalGoogle tilbyr flere alternativer for deling av feeder i Google Leser, slik at brukerne har mer kontroll over hvem som ser på sine feeder .
Google har økt alternativene for deling av feeder i Reader-produktet, noe som gir brukerne mer kontroll over denne funksjonen.
Slik endrer du standard PDF-leser, Kant, i Windows 10
Dette innlegget viser deg hvordan du endrer standard PDF-leser & seer, som er Microsoft Edge-nettleser, i Windows 10, til et av dine valg.
Hva er Index.dat-fil? Index.dat Plassering, fjerning, leser, Viewer
Hva er Index.dat-filen i Windows 7? Hvor er det i Windows 8? Last ned gratis index.dat-leser, seer, analysator. Lær hvordan du sletter index.dat-filen.