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?

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.