J'ai un fichier texte comme si: Je souhaite remplacer le caractère avant Comment ferais-je cela à l'aide de SED? Comment puis-je résoudre ce problème? p> p> - code> avec
* code>. La sortie attendue devrait donc être p>
J'ai essayé d'utiliser S / [AZ] * - / * / g code> mais il ne fonctionne pas et ne remplace pas avant et y compris le
- code> avec un seul
* Code> p>
5 Réponses :
Implémentez une boucle à l'aide d'étiquettes et de ramification:
$ sed ':1; s/^\(\**\)[a-z]/\1*/; t1' <<EOF every- 100 atmo- 220 EOF *****- 100 ****- 220
avec perl: sortie: p> dérivé de
avec gnu awk. Utilisez sortie: p> - code> en tant que séparateur de champ d'entrée et de sortie et remplacez-le dans la première colonne tout avec
* code>.
*****- 100
****- 220
IMHO Ceci ne vérifie pas uniquement la substitution des alphabets, il substituera tout entier ou caractère avant - code>.
Si cela ne vous dérangeait pas que je n'ai pas pris inspiration de votre solution et ajouté 1 dans le mien avec de légères modifications s'il vous plaît.
Une autre façon de le coder dans et un autre codage à Perl: p> sed code>:
Ceci pourrait fonctionner pour vous (GNU SED):
sed ':a;s/^\(\**\)[^-*]/\1*/;ta' file
- code> par une nouvelle ligne. li>
- Copiez la ligne. LI>
- Remplacez tout sauf la nouvelle ligne par
* code>'s. li>
- Ajoute la copie. LI>
- Remplacez tout entre les nouvelles lignes par un seul
- code>. li>
ul> une alternative, en utilisant une boucle: p> xxx pré> p>