J'ai peut-il être brisé sur plusieurs lignes pour le rendre plus clair ce qu'il fait? P> < p> par exemple quelque chose comme? p> sed code> très long
6 Réponses :
Oui, cela peut, je viens de le citer comme d'habitude:
Eh bien pas vraiment. En fait, vous devez utiliser la colonne semi-colonne ; code> 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
; code> (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 ////.
regex n'est pas censé utiliser une expression aussi longue, pourquoi ne pas raccourcir l'aiguille comme celle-ci:
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"
Qu'est-ce que S / $ / MOYENS après l'aiguille? Pouvez-vous expliquer un peu plus?
@Jitamaro: s / $ / xxx / code> est un moyen d'apporter
xxx code> à la fin de la ligne. Dans une regex
$ code> correspond à la fin de la ligne. Vous pouvez également faire
s / ^ / xxx / code> pour préparer
xxx code> 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.
Sandra, vous pouvez également placer cette grande commande SED dans un fichier, disons 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. p> p> tftp.sed code> et invoquer SED comme
SED -I -F TFTP.SED / VAR / LIB / TFTPBOOT / ltSp / i386 / pxelinux.cfg / par défaut code> où
tftp.sed code> semble:
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.
Cela pourrait fonctionner pour vous: ou p> n.b. Le & code> dans le côté droit de la substitution représente toute la regex correspondante du côté gauche p> p>
sed 's'/\ '[long1]'\ '[long2]'\ '/'\ '[long3]'\ '[long4]'\ '/' file.txt