GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter des données au tampon dans le script shell ?

J'aimerais faire ce qui suit en utilisant le script shell :(pour simplifier, j'utilise les mêmes données pour INPUT. Dans le cas réel, les données changent avec l'étiquette de boucle jj)

#!/bin/sh
for jj in `seq 100`; do
    cat INPUT.file >> OUTPUT.file
done

Cependant, cela est très inefficace car l'ouverture et la fermeture du fichier sont dans la boucle. Lorsque la taille du fichier INPUT.file est importante, ce code sera très lent. Je me demande donc s'il existe un moyen d'avoir/créer un tampon comme créer une variable pré-allouée en C.

Réponse acceptée :

Grâce à la réponse de Stéphane Chazelas à "Pourquoi il y a une telle différence de temps d'exécution entre echo et cat ?", la réponse de muru peut être un peu améliorée en appelant cat une seule fois (cependant, cette "petite" quantité peut devenir beaucoup pour le Big Data et les nombreuses itérations de boucle ; sur mon système, ce script prend environ 75 % du temps que prend le script ayant une boucle) :

#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file

Linux
  1. Comment exécuter un script shell lorsqu'un fichier ou un répertoire change ?

  2. Comment ajouter la sortie à un fichier ?

  3. Comment ajouter du texte à un fichier ?

  4. Comment exécuter un fichier sans extension .sh dans le shell

  5. Comment ajouter à un fichier en tant que sudo?

Comment utiliser des variables dans les scripts Shell

Comment créer des scripts shell

Comment exécuter un script Shell en tant que service Systemd sous Linux

Comment gérer les commutateurs dans un script shell ?

Comment créer un fichier temporaire en script shell ?

Comment exécuter une commande dans un script shell ?