Articles

Looping gjennom innholdet av en fil i Bash

Ofte det er et krav for å lese hver av linjen fra en fil ved hjelp av et bash-script. Det finnes ulike tilnærminger til å lese linjer form av en fil. I eksempelet nedenfor har vi først beskrevet hvordan å opprette et eksempel på en fil, og deretter kjøre et skript som leser som eksempel fil.

Opprette en fil for å Lese

# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt

å Kjøre koden ovenfor gir oss følgende resultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

ved Hjelp av Gjør-Mens

I denne tilnærmingen vi bruke en do-while-løkke for å lese en fil., Vi gir filen et navn som en inngang på slutten av filen. Først skal vi lage script og gi tillatelse til å utføre det. Da er det bare kan lese filen og vise resultatet.

#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt

å Kjøre koden ovenfor gir oss følgende resultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

ved Hjelp av for og i

I neste tilnærming vi bruker en for-løkke sammen med de i pkt. Her lagrer vi resultatet av cat-kommandoen (som er hver linje) i en variabel som er en del av for-løkke og echo variabelen.,

#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done

å Kjøre koden ovenfor gir oss følgende resultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Med bare echo

Vi kan også få innholdet av filen ved å bruke bare ekko. Men resultatet vil komme ut som en rekke linjer og skrives ut som én linje utgang viser kombinasjonen av alle linjer.

echo $( < a_file.txt )

å Kjøre koden ovenfor gir oss følgende resultat:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Lese-Fil med Tomme Linjer

Hvis en fil har noen linjer som er blanke, så vi ca unngå dem i produksjonen ved hjelp av følgende kode., Dette bruker IFS (interne Feltet Skilletegn) er satt til tom streng slik at den blanke linjer er behandlet som feltet skilletegn og unngås i utgang. Forutsatt at det ikke er tomme linjer mellom 3. og 4. linje, de blanke heftelser vil ikke bli skrevet ut.

#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt

å Kjøre koden ovenfor gir oss følgende resultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Publisert den 03-Jan-2020 11:45:05

Annonser