Playful Kiss - Playful Kiss: Full Episode 1 (Official & HD with subtitles)
Indholdsfortegnelse:
- Læsning af en fil linje for linje syntaks
- Læsning af en fil linje for linje-eksempler
- Alternative metodelæsningsmetoder
- Brug af en processubstitution
- Brug af en her streng
- Brug af filbeskrivelse
- Konklusion
Når du skriver Bash-scripts, vil du nogle gange befinde dig i situationer, hvor du har brug for at læse en fil linje for linje. For eksempel kan du have en tekstfil, der indeholder data, der skal behandles af scriptet.
I denne tutorial vil vi diskutere, hvordan man læser en fil linje for linje i Bash.
Læsning af en fil linje for linje syntaks
Den mest generelle syntaks til læsning af en fil linje for linje er som følger:
while IFS= read -r line do echo "$line" done < input_file
eller den tilsvarende enkeltlinjeversion:
while IFS= read -r line; do echo $line; done < input_file
Hvordan virker det?
Input-filen (
input_file
) er navnet på den fil, du vil være åben for at læse af
read
kommandoen.
read
kommandoen læser filen linje for linje og tildeler hver linje til linjevariablen. Når alle linier er behandlet, afsluttes mens loopen afsluttes. Den interne feltudskiller (
IFS
) er indstillet til nullstrengen for at bevare førende og bageste hvidafstand, som er standardopførsel for
read
kommandoen.
Læsning af en fil linje for linje-eksempler
Lad os se på følgende eksempel. Antag, vi har en fil med navnet
distros.txt
indeholder en liste over nogle af de mest populære Linux-distributioner og deres pakkeadministratorer adskilt med komma (
,
):
Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf
For at læse filen linje for linje kører du følgende kode i din terminal:
while IFS= read -r line do echo "$line" done < distros.txt
Koden læser filen efter linje, tildeler hver linje til en variabel og gentager variablen. Basicitet ville du se den samme output, som hvis du ville vise filindholdet ved hjælp af kommandoen kat.
Hvad hvis du kun vil udskrive de distributioner, der bruger apt? En måde ville være at bruge if-sætningen og kontrollere, om linjen indeholder den passende substring:
while IFS= read -r line do if]; then echo "$line" fi done < distros.txt
Ubuntu, apt Debian, apt
Når du læser fil linje for linje, kan du også videregive mere end én variabler til læse-kommandoen, som vil opdele linjen i felter baseret på
IFS
. Det første felt tildeles til den første variabel, det andet til den anden variabel osv. Hvis der er flere felter end variabler, tildeles resterende felter til den sidste variabel.
I det følgende eksempel indstiller vi IFS til et komma (
,
) og overfører to variabler
distro
og
pm
til læse-kommandoen. Alt fra starten af linjen, indtil det første komma tildeles den første variabel (
distro
), og resten af linjen tildeles den anden variabel (
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 metodelæsningsmetoder
Brug af en processubstitution
Processsubstitution giver dig mulighed for at videresende output fra kommandoen som filnavn:
while IFS= read -r line do echo "$line" done < <(cat input_file)
Brug af en her streng
Here String er en variant af Here-dokument. Strengen
(cat input_file)
holder de nye linjer:
while IFS= read -r line do echo "$line" done <<< $(cat input_file)
Brug af filbeskrivelse
Du kan også give input til loopen ved hjælp af en filbeskrivelse:
while IFS= read -r -u9 line do echo "$line" done 9< input_file
Når du arbejder med filbeskrivelser, skal du bruge et tal mellem 4 og 9 for at undgå konflikt med interne interne filbeskrivelser.
Konklusion
I Bash kan vi læse en fil linje for linje ved at give filnavnet som et input til en læsningsløkken til et stykke tid.
bash terminalLenovo fortsatte sin deluge af nye Windows 8 produkttilbud på CES 2013 , med nøgle tilføjelser til sin linje af Windows 8 hybrid bærbare computere annonceret mandag, herunder en mindre IdeaPad Yoga 11S. Disse nye bærbare computere følger op på virksomhedens tidligere meddelelser om berøringsbaserede tilføjelser til sin IdeaPad og ThinkPad clamshell-linje.
Lenovo lancerer også ThinkPad Helix, som kan fungere som en ren tablet eller dock til et tastatur med ekstra batteri. Det ser ud til at være et køreværdigt vejkrigers drømmesystem med 4G LTE-tilslutning, en fuld HD-skærm og et aftageligt tastatur.
Sådan læses Windows Update log ind Windows 10
Windows Update bruger Event Tracing til at generere diagnostiske logfiler i Windows 10 og gemmer dem i .etl format . Brug kommandoen Get-WindowsUpdateLog PowerShell til at læse Windows Update-logfiler.
Sådan læses let epub-bøger på Firefox
Find ud af, hvordan du nemt kan læse EPUB-bøger på Firefox.