Script de Bash para la cadena de búsqueda cerca de otra cadena en vim (?)

0

Pregunta

Estoy buscando un (bash) comando para abrir un archivo (como en vim), buscar una cadena específica, y buscar hacia atrás a partir de allí, encontrar una segunda cadena, y de salida (sólo) que la segunda cadena. Para un archivo como este:

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

Me he encontrado con esta medida hasta el momento: vim -c "/bbb" -c "n" -c "?aaa" -c "n"

Esto no funciona; vim lee:

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

También tengo que guardar la cadena aaa y en un archivo/variable -- yo no puedo entender cómo.

TIA

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

A la dirección de su principal pregunta... los comandos que se ejecuta en -c los parámetros son Ex comandos, no es normal el modo de comandos. Se da la circunstancia de que :/ y :? son válidos Ex comandos y trabajo vagamente como su modo normal contrapartes / y ?pero :n es la abreviatura de :help :next:

Edit [count] next file.

que es muy diferente de modo normal :help n.


Pero ¿por qué estás haciendo eso en Vim para empezar? No parece apropiado.

2021-11-23 10:38:49
0

Como otros dijeron, vim puede no ser la mejor herramienta para lo que quieres lograr.

Usted puede intentar :

#!/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

En otros idiomas

Esta página está en otros idiomas

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