Konwertowanie z wyszukiwania vim na sed

1

Mam długi dokument lateksowy z wieloma sekcjami. Chciałbym sprawdzić, czy wszystkie sekcje dokumentu są wypełnione. Dlatego szukam za każdym razem, gdy jest „}” kończący tytuł sekcji, w pewnej przestrzeni, a następnie „\” rozpoczynający następną sekcję (To daleko od idealne wyszukiwanie, ale według mnie jest w porządku.)

W vim używam

/}\_s\\ 

Które działa dobrze. Jednak staram się zreplikować wyszukiwanie w wierszu polecenia.

Zwykle używałbym grep, ale jest to dopasowanie wieloliniowe, więc nie ma. Mam niewielkie doświadczenie z sedem, ale próbowałem tego:

sed -e '/\}\s\\/p' file.tex

i daje mi wszystko (przypuszczalnie dlatego, że wypisuje pasującą multilinię - cały plik)

Jak mogę ulepszyć to polecenie sed, aby dać mi tylko, powiedzmy, pierwszą linię meczu?

Joe
źródło

Odpowiedzi:

2

sed, na przykład grep, przetwarza plik linia po linii. Co więcej, drukuje wszystko, chyba że określisz -nopcję (lub użyjesz dpolecenia).

Możesz wypróbować Perla:

perl -0777 -ne 'print $1 while /(\}\s*\\)/g' file.tex
  • -0777 czyta cały plik zamiast czytać go linia po linii
choroba
źródło