J'essaie de diffuser une commande SED sur plusieurs lignes dans un fichier Bash. J'ai plusieurs modèles que SED vérifie et j'espère séparer certains des schémas par un changement de ligne. Voici mon script actuel qui ne fonctionne pas, mettant tout sur une ligne de marche, mais j'espérais simplement le nettoyer un peu et diviser les choses. Merci pour toute aide! p> p>
3 Réponses :
Je ne sais pas si je vous ai compris, mais vous pouvez faire quelque chose comme ça si vous voulez simplement avoir plusieurs lignes d'expressions SED: ceci affiche Si vous le souhaitez sur une ligne, c'est possible aussi: p> donne le même résultat. p> pour ce que je Voyez, je vous suggérerais de le faire dans plusieurs lignes que vous le faites déjà, je ne fais que mettre tous les-sur une ligne séparée, comme je pense que c'est plus lisible. Quelque chose comme: p> vérifier ce lien pour plus d'informations: p> sous 423 code> , comme prévu. p>
citant plusieurs lignes SED dans la coque de Bourne code> p> p>
Eh bien, j'espérais inclure les mêmes commandes sur une ligne comme: Sed -e 'S / \ XVID \ -Lol // i; S / \ XVID \ -XOR // I; S / \ XVID \ -NOTV // I et utilisez le semi-points pour séparer des schémas similaires au lieu de séparer chacun individuellement. Essayer de jumeler les modèles ensemble si je peux.
Le problème est sur cette ligne: Il y a un J'ai inclus la barre oblique inverse de la cohérence. P> Cette ligne est manquante corrigé: p> Les messages d'erreur que j'ai obtenus étaient ce qui m'a conduit à la source des erreurs: p> S / code>. Il devrait être: p>
// i code>: p>
while read -r pattern
do
sedscript+="$pattern;"
done <<EOF
s/ \([^ ]*\)$/.\1/
s/\ \[sharethefiles\ com\]//i
s/\ x264\-Ctu//i
s/\ x264\-Bia//i
...
s/\ XVID//i
EOF
renF=$(echo "$f" | tr '.' ' ' | sed -e "$sedscript")
Hmmmm, peut-être corriger ces erreurs stupides peut-être le problème. Je vais devoir vérifier cela.
Merci pour l'aide, je l'apprécie, c'est ce que je cherchais. Merci!
une alternative éventuellement plus agréable serait d'utiliser un HereDoc, si GNU SED est disponible (non intégré à OSX):
sed -f - "$IN" > "$OUT" << SED_SCRIPT s/a/1/g s/test/full/g SED_SCRIPT
Qu'est-ce que "ne fonctionne pas" signifie? Avez-vous un message d'erreur? Qu'est-ce que c'est? La sortie diffère-t-elle de ce que vous attendez? De quelle manière? Il ne faut pas être nécessaire d'échapper aux espaces et aux traits d'union de votre façon dont vous avez.