Bash: lasot rindiņu

Bash While Read Line



Kad strādājat ar bash skriptiem, dažreiz jums, iespējams, vajadzēs izlasīt failu pa rindām. Paskaidrosim ar piemēru. Teksta failā ir daži dati, kas jāizpilda vai jāapstrādā, izmantojot skriptu. Tātad, bash skripta palaišana teksta faila apstrādei ir daudz atšķirīga. Lai lasītu failu pa rindām, jums jāievēro noteikta sintakse. Šis raksts palīdzēs jums izlasīt rindiņu no faila, izmantojot cilni while Bash.

Lasīšanas rindas pamata sintakse

Lai sinhronizētu failu, izmantojot cilpu while, tiek izmantota šāda sintakse:







kamēr lasīt -rlīnija;
darīt
izmest ārā '$ līnija';
darīts <input.file

Iepriekšminētās sintakses opcija “-r” tika nodota lasīšanas komandai, kas novērš slīpsvītras interpretāciju. Opcija “input_file” ir parādījusi jūsu faila nosaukumu, kuram vēlaties piekļūt, izmantojot komandu “read”.



Iekšējo lauku atdalītāju, kas saīsināts kā IFS, var izmantot, pirms lasīšanas komandai tiek iestatīta nulles virkne, kas neļauj apgriezt sākuma vai beigu atstarpes.



kamēr IFS=lasīt -rlīnija;
darīt
izmest ārā $ līnija;
darīts <input.file

Atveriet termināli, izmantojot īsinājumtaustiņu Ctrl + Alt + t, un pēc tam palaidiet tālāk norādītās komandas.





1. piemērs: faila lasīšana pa rindām

Ņemsim piemēru, kurā pieņemsim, ka mums ir fails ar nosaukumu OS.txt, kurā ir visu svarīgo Linux izplatījumu nosaukumi. Ja vēlaties lasīt failu, neizmantojot komandu “kaķis”, šim nolūkam varat izpildīt šādu komandu, lai veiktu konkrēto uzdevumu. Mēs izmantosim ciklu ciklu, kas nolasīs katru rindiņu no faila OS.txt un katrā posmā saglabās saturu mainīgā $ rindā, kuru varēsit parādīt vēlāk.

Ielīmējiet šādus Linux izplatīšanas nosaukumus failā OS.txt



CentOS
Ubuntu
Debian
LinuxMint $kamēr lasītlīnija;
darīt
izmest ārā $ līnija;
darīts <OS.txt


Izmantojot iepriekš minēto komandu, termināļa logā jūs saņemsit šādu atbildi:

2. piemērs: faila lasīšana, izmantojot bash skriptu

Izveidojiet bash failu un pēc tam pievienojiet šajā failā zemāk minēto kodu, lai izlasītu faila saturu. Jūs varat saglabāt iepriekšējo teksta failu jaunā mainīgajā $ faila nosaukums, un mainīgais $ n tiek izmantots, lai saglabātu katras rindas vērtību. Tagad, izmantojot cilpu while, mēs nolasīsim katru rindu no faila ar noteiktu rindas numuru.

#!/bin/bash
faila nosaukums=“OS.txt”
n=1
kamēr lasītlīnija;
darīt
#, lai izlasītu katru rindiņu
izmest ārā 'OS izplatīšanas līnija Nr.$ n:$ līnija'
n= $((n+1))
darīts < $ faila nosaukums

Saglabājiet failu ar nosaukumu OSinfo.sh un terminālī ierakstiet šādu komandu, lai palaistu iepriekš minēto bash skriptu.

$bashOSinfo.sh

Tagad palaidiet komandu cat, lai skatītu sākotnējo faila saturu.

$kaķisOS.txt

Alternatīva metode failu lasīšanai

Izmantojot komandu, kas nodod faila nosaukumu

Bash failā jāpievieno šāds koda skripts. Šajā skriptā mums kā arguments ir jāņem faila nosaukums. Pirmkārt, argumenta vērtību nolasa mainīgais $ 1, kuram ir lasāms faila nosaukums. Tā pārbaudīs, vai faila nosaukums pastāv norādītajā vietā, un pēc tam, izmantojot cilpu, tā nolasa failu pa rindām līdzīgi kā iepriekšējā piemērā.

#!/bin/bash
faila nosaukums=$ 1
kamēr lasītlīnija;darīt
#lasa katru rindu
izmest ārā $ līnija
darīts < $ failu.txt

Saglabājiet iepriekš minēto skriptu ar nosaukumu “Readline.sh” un izpildiet šādu komandu terminālī, lai palaistu iepriekš minēto skriptu:

Iepriekš minētajā iznākumā jūs ievērosit, ka fails “OSinfo.txt” tiek nodots kā arguments un “OSinfo.txt” saturs tiks parādīts pēc papildu atstarpju noņemšanas. Jūs varat parādīt sākotnējo faila saturu, palaižot “cat OSinfo.txt”.

Secinājums

Šajā rakstā mēs esam apsprieduši, kā lasīt rindas, izmantojot bash programmēšanas cilpu while. Mēs esam ieviesuši dažādas metodes, izmantojot bash skriptu, vai arī jūs varat vienkārši izmantot teksta failu, lai lasītu faila rindu pa rindai. Ja vēlaties uzzināt vairāk piemēru, tad, izmantojot iepriekš minēto sintaksi, varat to izpildīt arī savā sistēmā. Es ceru, ka jums patika šī apmācība un jums tā būs unikāla. Zināsim kādas kļūdas gadījumā.