GNU/Linux >> Tutoriels Linux >  >> Linux

Comment décomposer un fichier comme Split en Stdout pour le diriger vers une commande ?

J'ai un grand .sql fichier plein de SELECT instructions contenant des données que je souhaite insérer dans ma base de données SQL Server. Je cherche comment je pourrais essentiellement prendre le contenu du fichier, 100 lignes à la fois, et le transmettre aux commandes que j'ai définies pour faire le reste.

En gros, je cherche split qui sortira sur stdout , pas des fichiers.

J'utilise également CygWin sous Windows, donc je n'ai pas accès à la suite complète d'outils.

Réponse acceptée :

Je pense que la façon la plus simple de le faire est :

while IFS= read -r line; do
  { printf '%sn' "$line"; head -n 99; } |
  other_commands
done <database_file

Vous devez utiliser read pour la première ligne de chaque section car il semble n'y avoir aucun autre moyen de s'arrêter lorsque la fin du fichier est atteinte. Pour plus d'informations, consultez :

  • Vérifiez si le canal est vide et exécutez une commande sur les données si ce n'est pas le cas
  • Comment canaliser la sortie d'un processus à un autre, mais ne s'exécuter que si le premier a une sortie ?

Linux
  1. Comment échantillonner aléatoirement un sous-ensemble d'un fichier ?

  2. Supprimer Stdout d'une commande pendant T secondes ?

  3. Comment diviser un iso ou un fichier à l'aide de la commande 'split' sous Linux

  4. Comment ajouter la sortie à un fichier ?

  5. Comment générer une somme de contrôle partielle d'un fichier

Comment utiliser la commande Truncate sous Linux

Commande ls sous Linux pour lister les fichiers

Comment mélanger les lignes dans un fichier sous Linux

Comment utiliser la commande lsof sous Linux

Exa - Un remplacement moderne de la commande ls

Comment utiliser la commande shred Linux