Bash: mentre es llegeix la línia

Bash While Read Line



Quan esteu treballant en scripts bash, de vegades potser haureu de llegir un fitxer línia per línia. Expliquem-ho amb un exemple. Teniu algunes dades en un fitxer de text que s'han d'executar o processar mitjançant un script. Per tant, executar un script bash per processar un fitxer de text és molt diferent. Heu de seguir una sintaxi especificada per llegir un fitxer línia per línia. Aquest article us ajudarà a llegir una línia d’un fitxer mitjançant el bucle while de Bash.

Sintaxi bàsica de la línia mentre es llegeix

La sintaxi següent s'utilitza per bash shell per llegir un fitxer mitjançant bucle while:







mentre llegir -rlínia;
fer
trobo '$ línia';
fet <fitxer d’entrada

L’opció ‘-r’ de la sintaxi esmentada es va passar per llegir l’ordre que evita que la barra invertida no s’interpreti. L'opció 'fitxer_entrada' ha representat el nom del fitxer al qual voleu accedir mitjançant l'ordre 'llegir'.



El separador de camps intern abreujat com IFS es pot utilitzar abans que l'ordre de lectura s'estableixi a la cadena nul·la que impedeix retallar l'espai en blanc principal o final.



mentre IFS=llegir -rlínia;
fer
trobo $ línia;
fet <fitxer d’entrada

Obriu el terminal mitjançant la tecla de drecera Ctrl + Alt + t i, a continuació, executeu-hi les ordres següents.





Exemple 1: lectura de fitxers línia per línia

Prenguem un exemple en què suposem que tenim un fitxer anomenat OS.txt que conté els noms de totes les distribucions Linux importants. Si voleu llegir un fitxer sense utilitzar l’ordre ‘cat’, llavors, amb aquest propòsit podeu executar l’ordre següent per realitzar la tasca en particular. Utilitzarem el bucle while que llegirà cada línia del fitxer OS.txt i emmagatzemarà el contingut de cada pas en una variable $ line que podeu mostrar més endavant.

Enganxeu els següents noms de distribucions de Linux a OS.txt



CentOS
Ubuntu
Debian
LinuxMint $mentre llegirlínia;
fer
trobo $ línia;
fet <OS.txt


De l'ordre anterior, obtindreu la següent resposta a la finestra del terminal:

Exemple 2: lectura del fitxer mitjançant l'script bash

Creeu un fitxer bash i, a continuació, afegiu el codi esmentat a continuació en aquest fitxer per llegir el contingut del fitxer. Podeu emmagatzemar el fitxer de text anterior en una nova variable $ nom de fitxer i la variable $ n s'utilitza per mantenir el valor de cada línia. Ara, fent servir el bucle while, llegirem cada línia d’un fitxer amb un número de línia concret.

#! / bin / bash
nom de l'arxiu='OS.txt'
n=1
mentre llegirlínia;
fer
# per llegir cada línia
trobo 'US distribution line no.$ n:$ línia'
n= $((n +1))
fet < $ nom de fitxer

Deseu el fitxer amb un nom OSinfo.sh i escriviu l'ordre següent al terminal per executar l'script bash anterior.

$bashOSinfo.sh

Ara, executeu l'ordre cat per veure el contingut original del fitxer.

$gatOS.txt

Mètode alternatiu per a la lectura de fitxers

Utilitzant el nom de fitxer passant d’una ordre

En un fitxer bash, cal afegir el següent script de codi. En aquest script, hem de prendre un nom de fitxer com a argument. En primer lloc, el valor d'un argument és llegit per una variable de $ 1 que té un nom de fitxer per llegir. Comprovarà que el nom del fitxer existeix a la ubicació especificada i, mitjançant el bucle while, llegeix un fitxer línia per línia similar a l'exemple anterior.

#! / bin / bash
nom de l'arxiu=$ 1
mentre llegirlínia;fer
# llegint cada línia
trobo $ línia
fet < $ fitxer.txt

Deseu l'script anterior amb el nom 'Readline.sh' i executeu l'ordre següent al terminal per executar l'script esmentat anteriorment:

A la sortida anterior, observareu que el fitxer ‘OSinfo.txt’ passa com a argument i el contingut de ‘OSinfo.txt’ es mostrarà després d’eliminar espais addicionals. Podeu mostrar el contingut original del fitxer executant ‘cat OSinfo.txt’.

Conclusió

En aquest article, hem parlat de com llegir línies mitjançant el bucle while de la programació bash. Hem implementat diferents mètodes mitjançant l'script bash o simplement podeu utilitzar un fitxer de text per llegir una tasca de fitxer línia per línia. Si esteu interessats en obtenir més exemples, podeu utilitzar la sintaxi esmentada anteriorment al vostre sistema. Espero que us hagi agradat aquest tutorial i us sigui únic. Informeu-nos en cas d’error.