У меня есть большая таблица из Википедии (из источника вики), и я хочу извлечь один столбец, у меня он открыт в vim, и то, что я хочу извлечь, выглядит примерно так

|col||[[what I want]]||another column||another one||et cetera|

В каждой строке есть содержание, которое я хочу, поэтому я попробовал:

:%s/\[\[(.+?)\]\]/\1

Но я получаю ошибку

E486: Pattern not found: \[\[(.+?)\]\]

3 ответа3

1

Пытаться

:%s/.*\[\[\(.*\)\]\].*/\1/

который вернется

what i want

Т.е. тебе нужно

  • экранировать скобки группы "(" и ")", а также
  • сопоставьте деталь до и после интересной колонки, потому что вы хотите заменить ее.
1

Я бы сначала вырезал содержимое, а затем открыл его в vi:

cat wikifile.txt | cut -d \| -f 4 > foo
vi foo

Два шага, но два шага я всегда могу вспомнить, не задумываясь.

0

Это то, что вы хотите :

1,$ s/^\(.*\[\[\)\(.*\)\(\]\].*\)$/\2/

Он проверяет от начала строки до [[-> поместить его в атом 1, предложение -> атом 2, конец строки -> атом 3.

Тогда просто отобразите атом 2.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .