Articles

Looping prin conținutul unui fișier în Bash

adesea, este o cerință de a citi fiecare linie dintr-un fișier folosind un script bash. Există diferite abordări pentru a citi liniile formează un fișier. În exemplul de mai jos am descris mai întâi cum să creați un fișier eșantion și apoi să rulați un script care citește acel fișier eșantion.

Creați un fișier pentru a Citi

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

Rulează codul de mai sus ne dă următorul rezultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Folosind Do-Timp

În această abordare vom folosi o buclă do-timp pentru a citi un fișier., Dăm numele fișierului ca intrare la sfârșitul fișierului. Mai întâi creăm un script și îi dăm permisiunea de executare. Apoi, numai acesta poate citi fișierul și arată rezultatul.

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

Rulează codul de mai sus ne dă următorul rezultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

, Folosind pentru și în

În următoarea abordare vom folosi o buclă împreună cu clauza. Aici vom stoca rezultatul comenzii cat (care este fiecare linie) într-o variabilă care face parte din Pentru Buclă și ecou variabila.,

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

Rulează codul de mai sus ne dă următorul rezultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Cu doar echo

putem obține, de asemenea, conținutul fișierului folosind doar ecou. Dar rezultatul va ieși ca o serie de linii și imprimate ca o singură linie de ieșire care arată combinație a tuturor liniilor.

echo $( < a_file.txt )

Rulează codul de mai sus ne dă următorul rezultat:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Citirea Fișierului cu Linii Goale

Dacă un fișier are unele linii care sunt goale atunci noi ca să le evite în ieșire folosind codul de mai jos., Aceasta utilizează IFS (internal Field Separator) este setat la șirul gol, astfel încât liniile goale sunt tratate ca separator de câmp și evitate în ieșire. Presupunând că există linii goale între linia a 3-a și a 4-a, aceste garanții goale nu vor fi tipărite.

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

Rulează codul de mai sus ne dă următorul rezultat −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Publicat pe 03-Jan-2020 11:45:05

Publicitate