sed: remplacer plusieurs périodes avec un autre personnage
Je suis en train de faire un tableau dans emacs org-mode de sunrise-commandant de commandes à partir de l' .el fichier (voulez faire une feuille de triche). La liste ressemble à ceci:
/, j .......... go to directory
p, n .......... move cursor up/down
M-p, M-n ...... move cursor up/down in passive pane
^, J .......... go to parent directory
...
Je veux faire un org-mode table avec ce format:
| /, j | go to directory |
| p, n | move cursor up/down |
| M-p, M-n | move cursor up/down in passive pane |
| ^, J | go to parent directory |
...
Org prendra soin d'espacement; j'ai juste besoin d' "| commande | explication |"
Je ne peux pas obtenir sed pour remplacer plusieurs périodes avec une verticale de la barre oblique. Mes tentatives ont été comme ceci:
cat in.org | sed -e 's/[.]*/|/g' > out.org
cat in.org | sed -e 's/[.]/|/g' > out.org
cat in.org | sed -e 's/[.*]/|/g' > out.org
Je l'ai déjà utilisé ce pour remplacer attaque et de fuite des espaces vertical des barres obliques:
sed -e 's/^[ \t]*/|/g;s/[ \t]*$/|/g'|
Maintenant j'ai juste besoin de faire de même pour une chaîne de périodes. J'ai peur de ne pas comprendre sed assez bien pour l'obtenir pour traiter des périodes comme une période (et cible une goutte de mer) plutôt que de les traiter comme des caractères génériques. La deuxième et la troisième traiter chaque période comme une période, je me retrouve avec un tas de vertical des barres obliques.
Mais les premiers semblent juste de mettre un vert slash entre chaque personnage, donc je ne sais pas pourquoi il le fait. Il semble que c'est le retour à agir comme caractère générique.
Merci pour toute aide.
Vous devez vous connecter pour publier un commentaire.
Vous devez vous échapper de la période; la période correspond à "n'importe quel caractère". Et, depuis sed n'a pas toujours un + (1 ou plusieurs) opérateur, vous souhaitez utiliser un suivi de 0 ou plus, comme dans
Et, après avoir relu votre question, vous voulez un tuyau au début et à la fin. Donc, remplacer le ^ et le $ avec un tuyau ainsi. Vous pouvez le faire avec trois -e des expressions, mais j'aime juste les mettre tous les trois dans la ligne de commande séparés par des points-virgules. Il permet de rendre le modèle ressemble plus à un bruit de ligne. 🙂
Si vous voulez correspondre, disons, 2 ou plusieurs périodes, l'utilisation
\.\.\.*
. Etc. C'est une honte que le sed n'est pas toujours du soutien de la gamme d'expressions.Cela devrait le faire pour vous:
La
{2,}
dit juste pour correspondre à 2 ou plus, de sorte que si vous rencontrez des périodes dans d'autres lieux, vous n'aurez pas un problème. Le "- e "produit plusieurs regexes, et l'option "- r " signifie l'utilisation prolongée regexes.Espérons que cela fonctionne, il le fait sur gnu sed 4.1.2.