Как я могу заставить sed удалить `\` и что-нибудь еще? - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь написать sed скрипт для преобразования кодированных таблиц LaTeX в таблицы с разделителями табуляции.

Для этого мне нужно преобразовать & в \t и убрать все, что предшествует \.

Это то, что у меня так далеко:

s/&/\t/g
s/\*/" "/g

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

Любые предложения приветствуются.Кроме того, вы можете кратко объяснить, что предлагаемые сценарии «говорят»?Я новичок в sed, и это действительно помогает в процессе обучения!

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Предполагается, что вы запускаете его как сценарий sed, а не непосредственно в командной строке:

s/\\.*/ /g

Объяснение:

\\ - двойной обратный слеш соответствует буквальному обратному слеш(один \ интерпретируется как «экранирование следующего символа», за которым следует .* (. - соответствует любому отдельному символу, * - произвольно много раз).

1 голос
/ 18 августа 2011

Вам необходимо избежать обратной косой черты, поскольку это специальный символ.
Если вы хотите обозначить «любой символ», вам нужно использовать.(точка)

второе выражение должно быть:

s/\\.//g

Надеюсь, я понял ваше намерение, и вы хотите удалить символ после обратной косой черты, если хотите удалить все символыв строке после обратной косой черты добавьте звездочку (*) после точки.

...