Строка замены только с частью строки

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

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

Каждая строка имеет содержание, которое я хочу, таким образом, я попробовал:

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

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

E486: Pattern not found: \[\[(.+?)\]\]
0
задан 01.11.2009, 21:33

3 ответа

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

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

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

1
ответ дан 24.11.2019, 07:01

Попробовать

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

который возвратится

what i want

Т.е. Вы должны

  • выйдите из скобок группы" (" и")" и также
  • соответствуйте части прежде и после интересного столбца, потому что Вы хотите заменить его.
1
ответ дан 24.11.2019, 07:01
  • 1
    Вероятно, более безопасный использовать' [^]] *' вместо '.*' в случае, если существует два поля с двойными квадратными скобками вокруг них. – Jonathan Leffler 01.11.2009, 22:00

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

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

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

Затем просто отобразите атом 2.

0
ответ дан 24.11.2019, 07:01

Теги

Похожие вопросы