Comment faire fonctionner sed sur des parties spécifiques d'une ligne uniquement? Et, au contraire, comment je fais que sed ne fonctionne pas sur des parties spécifiques d'une ligne?Comment opérer sur une partie de la ligne seulement
Exemples:
"A a A a (A a) A (a A) a"
Comment, par exemple, remplacer tous les A
s avec T
s que entre le (
et )
obtenir:
"A a A a (T a) A (a T) a"
Et donné exemple suivant entrée:
"F f F f (F f) F (f F) f"
Comment, par exemple, remplacer tous les F
s avec X
s mais pas entre à obtenir (
et )
:
« X f X f (F f) X (f F) f "
J'ai cherché Google, mais je n'ai trouvé rien d'utilisable. Je suppose que c'est une question générale à propos de sed. Le problème est réductible à des "modèles" généraux, je l'espère.
- ayant et TO alors fonctionner entre eux seulement (sur toutes les occurrences sur la ligne donnée)
- ayant et opérer ailleurs que entre eux ...
- cas particulier lorsque FROM et TO sont les même (entre « et » ou « FOO » et « FOO », etc.) pour les 1. et 2.
Il devrait fonctionner avec toute opération, non seulement une substitution, mais aussi avec l'impression, etc., comme impression tout entre les chaînes "FOO" et "BAR" dans la chaîne.
"1 2 3 BAR a b c FOO d e f BAR g a h FOO i j k BAR l m n FOO o p q"
Le résultat sera
" d e f i j k "
Ainsi, des exemples généraux sur la façon de le faire serait très appréciée. Il semble aussi que cette question soit assez courante, mais aucun bon howto ne se trouve encore sur Google. Je suppose également que ce serait assez difficile à répondre. S'il vous plaît, ne donnez pas non plus de conseils sur la façon de le faire en utilisant Perl, AWK ou tout autre que sed. Cette question est vraiment une question sed-only.
J'ai fait de mon mieux. Mon idée était de diviser la ligne en morceaux par le FROM et TO (en quelque sorte) et ensuite "en quelque sorte" (je ne sais pas encore comment) d'opérer soit sur des parties paires ou impaires seulement ou quelque chose de semblable. Si je savais comment le faire, je ne serais pas demandé ici. Et, il est très probable que mon idée de scission puisse être fausse. C'est assez difficile et j'avais l'habitude d'utiliser sed pour des tâches simples seulement auparavant. – mjf