Script Bash pour la chaîne de recherche à proximité d'une autre chaîne dans vim (?)

0

La question

Je suis à la recherche d'un (bash) de commande pour ouvrir un fichier (comme dans vim), la recherche d'une chaîne de caractères spécifique, et la recherche vers l'arrière à partir de là, trouver un deuxième chaîne, et la sortie (seulement) que la deuxième chaîne. Pour un fichier comme ceci:

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

Je suis venu avec cette mesure: vim -c "/bbb" -c "n" -c "?aaa" -c "n"

Cela ne fonctionne pas; vim se lit comme suit:

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

J'ai aussi besoin d'enregistrer la chaîne aaa y dans un fichier/variable -- je ne peux pas comprendre comment.

TIA

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

Pour répondre à votre question principale... les commandes exécutées en -c les paramètres sont les commandes Ex, pas en mode normal commandes. Il se trouve que :/ et :? sont valables les commandes Ex et de travail vaguement comme leur mode normal homologues / et ?mais :n est une abréviation pour :help :next:

Edit [count] next file.

ce qui est très différent du mode normal :help n.


Mais pourquoi tu fais ça dans Vim pour commencer? Il ne semble pas approprié.

2021-11-23 10:38:49
0

Comme les autres ont dit, vim peut-être pas le meilleur outil pour ce que vous voulez atteindre.

Vous pouvez essayer :

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

Dans d'autres langues

Cette page est dans d'autres langues

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