Script Bash para cadeia de caracteres de pesquisa perto de outra cadeia de caracteres no vim (?)

0

Pergunta

Estou à procura de um (bash) comando para abrir um arquivo (como o vim), procurar por uma seqüência específica, e pesquisar para trás a partir daí, encontrar uma segunda seqüência de caracteres e de saída (apenas) que a segunda seqüência de caracteres. Para um arquivo como este:

...
aaa x
...
aaa y
...       <-- any number of lines, but necessarily greater than 0
bbb
...

Eu vim com isso até agora: vim -c "/bbb" -c "n" -c "?aaa" -c "n"

Isso não funciona; vim lê:

Error detected while processing command line:
E163: There is only one file to edit
Press ENTER or type command to continue

Eu também preciso, para salvar a seqüência de caracteres aaa y em um arquivo/variável -- eu não consigo descobrir como.

TIA

bash vim
2021-11-23 10:00:41
2
0

Para abordar a sua principal pergunta... os comandos executados no -c os parâmetros são Ex-comandos, não é normal o modo de comandos. Acontece apenas que :/ e :? são válidos Ex comandos e trabalho vagamente como seu modo normal homólogos / e ?, mas :n é um atalho para :help :next:

Edit [count] next file.

o que é muito diferente do modo normal :help n.


Mas por que você está fazendo que Vim para começar? Não parece apropriado.

2021-11-23 10:38:49
0

Como os outros disseram, vim pode não ser a melhor ferramenta para o que você deseja alcançar.

Você pode tentar :

#!/bin/bash

expect <<EOF
spawn vim input-file
send ":1\r/bbb\rn\r?aaa\r:.+1,\$ d\r:1,.-1d\r:w! output-file\r"
sleep 1
EOF
2021-11-23 12:58:20

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................