Регулярное выражение: не обратная косая черта или начало строки - PullRequest
1 голос
/ 12 марта 2012

В текстовом файле мне нужно удалить неэкранированные символы, как в следующем примере

"\\s" -> "\s"
"\s" -> ""

Мне нужно использовать sed для этого упражнения. Я сделал эту команду:

s/\([^\]\)\\s/\1/g
s/\\\\/\\/g

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что \s в начале строки не удаляется. Что может быть добавлено в регулярное выражение, чтобы выполнить это. Я также попробовал * и ?, но проблема в том, что они также удаляют строки \\s.

Так что мне действительно нужен способ сопоставить «не обратную косую черту или начало строки».

1 Ответ

0 голосов
/ 12 марта 2012

Это может работать для вас:

echo '\s xxxxx \\s yyyyy \s zzzzz \\s \\s end' |
sed 's/\\s/\n/g;s/\\\n/\\s/g;s/\n//g'
xxxxx \s yyyyy  zzzzz \s \s end

трехступенчатый процесс:

  1. Изменить \s на \n
  2. Изменить \\n на \s
  3. Удалить \n, то есть оригинал \s '

N.B. Я использую \n, потому что он не может появиться в исходной строке, поскольку sed использует его как разделитель строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...