Важно знать о регулярных выражениях vim, что разные уровни
требуется экранирование (в отличие, скажем, от регулярных выражений в Perl или Ruby)
С :help /\m
after: \v \m \M \V matches
'magic' 'nomagic'
$ $ $ \$ matches end-of-line
. . \. \. matches any character
* * \* \* any number of the previous atom
() \(\) \(\) \(\) grouping into an atom
| \| \| \| separating alternatives
\a \a \a \a alphabetic character
\\ \\ \\ \\ literal backslash
\. \. . . literal dot
\{ { { { literal '{'
a a a a literal 'a'
Значением по умолчанию является «магия», поэтому, чтобы регулярное выражение, которое вы дали, сработало, вам нужно
должны использовать:
:%s/".*\(\d\{10}\).*"/\1/
Если вы хотите удалить все, кроме первого 7-значного идентификатора и совпадений
(я предполагаю, что вы имеете в виду, что хотите удалить строки без какого-либо соответствия)
:v/^\([[:alnum:]]\{7}\),\s*".*\(\d\{10}\).*/d
:%s//\1,\2/
Команда :v/<pattern>/
позволяет запускать команду в каждой строке, которая не соответствует
данный шаблон, так что это просто удаляет несоответствия. :s//
повторно использует предыдущий шаблон,
поэтому нам не нужно указывать это.
Это преобразует следующее:
0g98932,"long description sometimes containing numbers like 0123456789"
0g98932,"long description no numbers"
0g98932,"long description no numbers"
0g98932,"long description sometimes containing numbers like 0123456789"
0g98932,"long description no numbers"
0g98932,"long description no numbers"
0g98932,"long description no numbers"
0g98932,"long description no numbers"
0g98932,"long description sometimes containing numbers like 0123456789"
0g98932,"long description no numbers"
0g98932,"long description no numbers"
0g98932,"long description sometimes containing numbers like 0123456789"
в это:
0g98932,0123456789
0g98932,0123456789
0g98932,0123456789
0g98932,0123456789