Substituir linha por apenas parte da linha

0

Eu tenho uma grande tabela da Wikipedia (da fonte wiki), e eu quero extrair uma única coluna, eu a abro no vim, e o que eu quero extrair é algo como isto

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

Cada linha tem conteúdo que eu quero, então eu tentei:

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

Mas recebo o erro

E486: Pattern not found: \[\[(.+?)\]\]
    
por Jeffrey Aylesworth 01.11.2009 / 20:33

3 respostas

1

Eu cortaria o conteúdo primeiro e depois abria no vi:

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

Dois passos, mas dois passos que eu sempre consigo lembrar sem pensar muito.

    
por 02.11.2009 / 02:19
1

Tente

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

que retornará

what i want

Ou seja. você precisa

  • escape dos colchetes de grupo "(" e ")" e também
  • corresponde à parte antes e depois da coluna interessante porque você deseja substituí-la.
por 01.11.2009 / 20:56
0

É isso que você quer:

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

Verifica-se desde o início da linha até [[- > colocá-lo no átomo 1, a sentença - > átomo 2, o fim da linha - > átomo 3.

Em seguida, basta exibir o átomo 2.

    
por 01.11.2009 / 20:54