sed: заменить несколько точек другим символом

Я делаю таблицу в emacs org-mode команд sunrise-commander из файла .el (хочу сделать шпаргалку). Список выглядит следующим образом:

/, 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
...

Я хочу превратить это в таблицу режима организации с таким форматом:

| /, 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              |
...

Организация позаботится о интервале; Мне просто нужно "| команда | объяснение |"

Я не могу заставить sed заменить несколько точек вертикальной косой чертой. Мои текущие попытки были такими:

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

Я уже использовал это, чтобы заменить начальные и конечные пробелы вертикальными косыми чертами:

sed -e 's/^[ \t]*/|/g;s/[ \t]*$/|/g'|

Теперь мне просто нужно сделать то же самое для строки точек. Боюсь, я недостаточно хорошо понимаю sed, чтобы заставить его обрабатывать периоды как точку (и нацеливать их на капли), а не рассматривать их как подстановочные знаки. Второй и третий рассматривают каждый период как период, так как я получаю кучу вертикальных косых черт.

Но первая, кажется, просто ставит вертикальную косую черту между каждым отдельным символом, так что я не уверен, зачем она это делает. Похоже, он снова начинает действовать как подстановочный знак.

Спасибо за любую помощь.

7
задан Hendy 12 November 2010 в 20:48
поделиться