GNU/Linux >> Linux Esercitazione >  >> Linux

Come analizzare ogni riga di un file di testo come argomento di un comando?

Sto cercando di scrivere uno script che accetta un .txt nomefile come argomento, legge il file riga per riga e passa ogni riga a un comando. Ad esempio, esegue command --option "LINE 1" , quindi command --option "LINE 2" , ecc. L'output del comando viene scritto in un altro file. Come faccio a farlo? Non so da dove cominciare.

Risposta accettata:

Usa while read ciclo:

: > another_file  ## Truncate file.

while IFS= read -r LINE; do
    command --option "$LINE" >> another_file
done < file

Un altro è reindirizzare l'output per blocco:

while IFS= read -r LINE; do
    command --option "$LINE"
done < file > another_file

L'ultimo è aprire il file:

exec 4> another_file

while IFS= read -r LINE; do
    command --option "$LINE" >&4
    echo xyz  ## Another optional command that sends output to stdout.
done < file

Se uno dei comandi legge l'input, sarebbe una buona idea usare un altro fd per l'input in modo che i comandi non lo mangino (qui assumendo ksh , zsh o bash per -u 3 , usa <&3 invece portatile):

while IFS= read -ru 3 LINE; do
    ...
done 3< file

Infine per accettare argomenti, puoi fare:

#!/bin/bash

FILE=$1
ANOTHER_FILE=$2

exec 4> "$ANOTHER_FILE"

while IFS= read -ru 3 LINE; do
    command --option "$LINE" >&4
done 3< "$FILE"

Quale potrebbe essere eseguito come:

bash script.sh file another_file

Un'idea in più. Con bash , usa readarray :

readarray -t LINES < "$FILE"

for LINE in "${LINES[@]}"; do
    ...
done

Nota:IFS= può essere omesso se non ti dispiace avere i valori di riga tagliati dagli spazi iniziali e finali.


Linux
  1. Come estrarre il file tar.gz in Linux utilizzando la riga di comando

  2. Come aggiungere numeri di riga a file di testo su Linux

  3. Come passare un argomento della riga di comando in uno script di shell?

  4. Come spostare una riga in un file di testo su o giù di una riga?

  5. Come sostituire un file in jar con la riga di comando in Linux?

Come salvare l'output dei comandi di Linux in un'immagine o in un file di testo

Come analizzare o visualizzare il codice XML nella riga di comando di Linux

Come bloccare un file di testo in Linux usando il comando flock

Come stampare righe duplicate in un file di testo in Linux

Come inviare un'e-mail con allegato file dalla riga di comando

Come estrarre il file Tar.xz sulla riga di comando di Linux