GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les lignes d'un fichier comme arguments d'une commande ?

command `< file`

transmettra le contenu du fichier à la commande sur stdin, mais supprimera les retours à la ligne, ce qui signifie que vous ne pourrez pas parcourir chaque ligne individuellement. Pour cela, vous pouvez écrire un script avec une boucle 'for' :

for line in `cat input_file`; do some_command "$line"; done

Ou (la variante multiligne) :

for line in `cat input_file`
do
    some_command "$line"
done

Ou (variante multiligne avec $() au lieu de `` ):

for line in $(cat input_file)
do
    some_command "$line"
done

Références :

  1. Syntaxe de la boucle For :https://www.cyberciti.biz/faq/bash-for-loop/

Comme déjà mentionné, vous pouvez utiliser les backticks ou $(cat filename) .

Ce qui n'a pas été mentionné, et je pense qu'il est important de le noter, c'est que vous devez vous rappeler que le shell divisera le contenu de ce fichier en fonction des espaces, en donnant chaque "mot" qu'il trouve à votre commande comme argument. Et même si vous pouvez mettre un argument de ligne de commande entre guillemets afin qu'il puisse contenir des espaces, des séquences d'échappement, etc., la lecture du fichier ne fera pas la même chose. Par exemple, si votre fichier contient :

a "b c" d

les arguments que vous obtiendrez sont :

a
"b
c"
d

Si vous voulez extraire chaque ligne comme argument, utilisez la construction while/read/do :

while read i ; do command_name $i ; done < filename

Vous faites cela en utilisant des backticks :

echo World > file.txt
echo Hello `cat file.txt`

Si votre shell est bash (entre autres), un raccourci pour $(cat afile) est $(< afile) , vous écririez donc :

mycommand "$(< file.txt)"

Documenté dans la page de manuel de bash dans la section « Substitution de commandes ».

Alternativement, faites lire votre commande à partir de stdin, donc :mycommand < file.txt


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment utiliser la commande Tar sous Linux

  4. Comment utiliser la commande basename ?

  5. Comment utiliser sed pour supprimer les n dernières lignes d'un fichier

Comment utiliser la commande Linux head

Comment utiliser la commande Linux diff

Comment utiliser la commande Linux Ping

Comment utiliser Sudo et le fichier Sudoers

Comment utiliser la commande uniq pour traiter des listes sous Linux

Comment utiliser la commande Gzip sous Linux ?