Mam wiele plików, które edytowałem w Vimie (ponad 3000). Ze względu na ułatwienie sobie pracy mam ustawione wiersze na 80 znaków. Oto mój problem zilustrowany pomocą Vima:

==============================================================================
02.1 Pierwsze uruchomienie Vima

Vima uruchamia się poleceniem: >

gvim plik.txt

W Uniksie można tę komendę wprowadzić przy każdym znaku zachęty. W MS-Windows
należy otworzyć okno MS-DOS i tam wpisać polecenie.
W każdym wypadku Vim otwiera plik nazwany plik.txt. Ponieważ jest to nowy
plik otwiera się puste okno. Ekran będzie wyglądał tak:

+---------------------------------------+
|#					|
|~					|
|~					|
|~					|
|~					|
|"plik.txt" [New file]			|
+---------------------------------------+
	("#" pozycja kursora.)

Linie zaczynające się tyldą (~) nie należą do pliku. Innymi słowy, jeśli
Vimowi brakuje pliku do pokazania na ekranie pokazuje linie zaczynające się
tyldą. Na dole ekranu linia komunikatów informuje, że plik nazywa się plik.txt
i jest on plikiem. Komunikat jest chwilowy i inne informacje szybko go
nadpiszą.

POLECENIE VIM

Polecenie gvim każe edytorowi stworzyć nowe okno do edycji. Jeśli użyjesz
polecenia: >

vim plik.txt

Edycja odbędzie się w oknie poleceń. Oznacza to, że jeśli polecenie było
wydane wewnątrz xterma edytor będzie używał okna xterma. Jeśli polecenie
zostało wydane w oknie poleceń MS-DOS w systemie Microsoft Windows edycja
będzie odbywać się wewnątrz tego okna. Tekst w obu oknach będzie wyglądał tak
samo, ale gvim ma parę dodatkowych możliwości, na przykład pasek menu. Więcej
o tym później.

Na zielono zaznaczyłem bloki tekstu do obróbki. Potrzebuję wyrażenia regularnego i skryptu w byle jakim języku dostępnym w Linuksie (może być i Brainfuck :> ) byle mi ułatwił pracę i czegoś mnie nauczył.

Zadanie: Usunąć znaki końca lini(/n) w zielonych blokach, oprócz ostatniej w bloku (najlepiej by to robił na wielu plikach).

  1. Znaleźć w tekście wszystkie bloki tekstu poprzedzone pustym wierszem ($), zawierające więcej niż 1 wiersz tekstu i kończącymi się w ostatnim wierszu bloku znakami., :, : > lub ! Po czym znów następuje pusty wierz (</sup>$). Ma pomijać

Męczę się 2 dzień ucząc się programować w bashu i perlu z elementami awk, sed masą poleceń powłoki (nie jestem programistą, nie studiuję), potrzebuję tego do edycji plików na własne potrzeby i tłumaczeń. I mi nie wychodzi.
Moim największym problemem jest wyszukanie bloku i wykonaniu operacji tylko na nim. Resztę wiem jak zrobić. Może będę miał roblem z edycją wielu plików.

Co odkryłem:
s//n/ / - zamieni mi znak nowej linii na spacje (składnia sed) z g na końcu robi to dla całego pliku (tylko jak to użyć do bloku tekstu).

w bashu:

for x in *.txt
 do 
  echo "edycja wielu plikow $x"
  sed -e 's/\/n/ /' "$x">"$x.1" 
done

Tylko, że to zmienia wszystie końce linii na spacje :/