sed 's/[long1][long2]/[long3][long4]/' file.txt
Je voudrais diviser cette commande sur plusieurs lignes - fx quelque chose comme ceci:
sed 's/
[long1]
[long2]
/
[long3]
[long4]
/' file.txt
L'utilisation \
ou la séparation de chaînes n'a pas fonctionné.
/x
modificateur de substitution.Réponses:
Vous pouvez enregistrer une longue chaîne dans des variables bash, puis utiliser dans la
sed
commande:Si vous pouvez utiliser
perl
, vous pouvez rompre le motif long avec lex
modificateur:la source
sed "s/$string/$replace/" file.txt
c'est bien.replace=
.Le fractionnement sur plusieurs lignes avec barre oblique inverse fonctionne si les nouvelles lignes ne sont pas en retrait.
Testé sur Cygwin avec GNU sed 4.2.2
la source
GNU sed version 4.2.1
et ça ne marche pas.Un autre aspect:
Les
[long]
éléments ci-dessus sont-ils maintenables ?Plus les clauses sont courtes et distinctes, plus elles seront faciles à modifier et à améliorer au fil du temps et les faits (sed-external) changent autour de la fonction qu'ils fournissent.
par exemple
... pourrait être quelque chose à rechercher et à préférer.
la source
Vous pouvez également décomposer cela de cette façon:
Ou peut-être comme:
Ou avec un hérédoc:
la source