Skrypt Bash do wyszukiwania ciągów znaków obok z innym tekstem w vim (?)

0

Pytanie

Szukam polecenie (bash) do otwarcia pliku (na przykład, w vim), wyszukiwania określonego wiersza i wyszukiwania w przeciwnym kierunku stamtąd, aby znaleźć drugi wiersz i wypisz (tylko) ten drugi wiersz. Do tego pliku, jak ten:

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

Ja już na to wpadł do tej pory: vim -c "/bbb" -c "n" -c "?aaa" -c "n"

To nie działa; vim czyta:

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

Muszę również zapisać ciąg aaa y w pliku/zmiennej-nie mogę zrozumieć, jak to zrobić.

TIA

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

Aby odpowiedzieć na twoje pytanie... polecenia, które można wykonać w -c parametry-polecenia Ex, a nie polecenia w trybie zwykłym. Po prostu tak wyszło, że :/ i :? są rzeczywistymi zespołami Ex i pracują w przybliżeniu tak samo, jak ich odpowiedniki w normalnym trybie / i ?ale :n jest skrótem dla :help :next:

Edit [count] next file.

który mocno różni się od zwykłego trybu :help n.


Ale na początek, dlaczego robisz to w Vim? To wydaje się niewłaściwe.

2021-11-23 10:38:49
0

Jak mówili inni, vim może to nie jest najlepsze narzędzie do tego, co chcesz osiągnąć.

Możesz spróbować :

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

W innych językach

Ta strona jest w innych językach

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