12
votes

Une longue commande SED peut-elle être brisée sur plusieurs lignes?

J'ai sed très long xxx

peut-il être brisé sur plusieurs lignes pour le rendre plus clair ce qu'il fait? < p> par exemple quelque chose comme? xxx


0 commentaires

6 Réponses :


2
votes

Oui, cela peut, je viens de le citer comme d'habitude: xxx


3 commentaires

Eh bien pas vraiment. En fait, vous devez utiliser la colonne semi-colonne ; pour séparer les commandes si elles sont sur la même ligne. Si les commandes sont sur différentes lignes, alors pas besoin de ; (mais cela ne fera pas mal si c'est là).


Le problème est de savoir comment briser la partie regex. Dans l'exemple, c'est la recherche et remplacer les chaînes très longtemps, c'est ce que je voudrais céder.


Il s'agit d'une réduction de 2 actions et de demande est sur le point de réduire une seule action S ////.



1
votes

regex n'est pas censé utiliser une expression aussi longue, pourquoi ne pas raccourcir l'aiguille comme celle-ci: xxx


0 commentaires

5
votes

Quelques façons de rendre cela plus petit. Si vous venez d'ajouter le texte à la fin de la ligne, vous pouvez utiliser SED comme ceci:

PXE_BOOT_FILE=/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
SEARCH_PATTERN='append ro initrd=initrd.img quiet splash nbdport=2000'
REPLACE_PATTERN="$SEARCH_PATTERN video=LVDS-1:d"
sed -i "s/$SEARCH_PATTERN/$REPLACE_PATTERN/g" "$PXE_BOOT_FILE"


3 commentaires

Qu'est-ce que S / $ / MOYENS après l'aiguille? Pouvez-vous expliquer un peu plus?


@Jitamaro: s / $ / xxx / est un moyen d'apporter xxx à la fin de la ligne. Dans une regex $ correspond à la fin de la ligne. Vous pouvez également faire s / ^ / xxx / pour préparer xxx au début de la ligne.


@HITAMARO: Substitut. Il ne s'appliquera qu'aux lignes correspondant à la précédente regex. Vous pouvez également utiliser des numéros de ligne et des gammes aussi. Lisez sur les adresses SED (section «Adresses») dans la page SED Man pour plus de détails.



0
votes

Sandra, vous pouvez également placer cette grande commande SED dans un fichier, disons tftp.sed et invoquer SED comme SED -I -F TFTP.SED / VAR / LIB / TFTPBOOT / ltSp / i386 / pxelinux.cfg / par défaut tftp.sed semble: xxx

Comme vous pouvez le voir ci-dessus, vous pouvez avoir plusieurs SED Commandes dans le fichier SED Source, assurez-vous simplement qu'ils sont chacun dans une ligne séparée.


1 commentaires

Même si cela ne réjouit pas de la demande (coupe longue SED 'Single' 'Action), il s'agit d'une alternative possible si la demande est due à une ligne trop longue pour écrire sur une ligne de commande, non si elle est dans un script.



2
votes

Cela pourrait fonctionner pour vous: xxx

ou xxx

n.b. Le & dans le côté droit de la substitution représente toute la regex correspondante du côté gauche


0 commentaires

7
votes
sed 's'/\
'[long1]'\
'[long2]'\
'/'\
'[long3]'\
'[long4]'\
'/' file.txt

0 commentaires