GNU/Linux >> Tutoriels Linux >  >> Linux

Insérer un fichier dans un autre fichier après la 1ère occurrence d'un motif ?

Je veux insérer le contenu de file1 dans file2 après un PATTERN correspondant. Je veux le faire seulement après la première occurrence du PATTERN.

J'aimerais connaître la modification que je dois apporter à la commande suivante pour mes besoins.

sed -i "/PATTERN/r file1" file2

Réponse acceptée :

sed '/PATTERN/{
       r file1
       :a
       n
       ba
     }' file2

:a , n , ba est juste un cycle qui imprime tout le contenu du fichier après le PATTERN jusqu'à la fin. et notez que ces 6 lignes ne sont qu'une seule commande, mais une nouvelle ligne est nécessaire pour délimiter la prochaine commande sed après r , : et b .

informations supplémentaires de info sed :

`n'
     If auto-print is not disabled, print the pattern space, then,
     regardless, replace the pattern space with the next line of input.
     If there is no more input then `sed' exits without processing any
     more commands.

`: LABEL'
     [No addresses allowed.]

     Specify the location of LABEL for branch commands.  In all other
     respects, a no-op.

`b LABEL'
     Unconditionally branch to LABEL.  The LABEL may be omitted, in
     which case the next cycle is started.

Linux
  1. Comment grep pour le contenu après le modèle?

  2. mmap :le fichier mappé sera-t-il immédiatement chargé en mémoire ?

  3. Insérer plusieurs lignes dans un fichier après le motif spécifié à l'aide d'un script shell

  4. Chat récursif tous les fichiers en un seul fichier

  5. comment copier les lignes 10 à 15 d'un fichier dans un autre fichier, sous unix ?

La fête ?

Comment copier un fichier d'un autre répertoire vers celui en cours ?

Comment suivre -f le dernier fichier journal avec un modèle donné

Comment supprimer les lignes qui apparaissent sur le fichier B d'un autre fichier A ?

Comment insérer du texte à la 1ère ligne d'un fichier à l'aide de sed ?

Que signifie un point après les bits d'autorisation de fichier ?