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.