Automatyzacja edycji plików tekstowych

0

Witam,

mam potrzebę automatyzacji edycji plików tekstowych (dokładniej plików wejściowych dla solvera do obliczeń inżynierskich). Np. coś takiego: w pliku jest zbiór numerów punktów, trzeba wstawić polecenia, które będą się odnosiły do tych punktów (pojedynczo) i dodatkowo zawierały rosnące numery:

PUNKTY
4, 8, 10, 245, …
OPERACJA, NUMER=1, PUNKT=4
OPERACJA, NUMER=2, PUNKT=8
…

Czy są jakieś zaawansowane, ale darmowe edytory tekstu, w których można tworzyć skrypty tego typu i nie jest to bardzo skomplikowane? Używam obecnie Notepad++, ale tam chyba nie ma porządnego scriptingu. W vim zdaje się, że jest tego jeszcze mniej. Jeśli nie ma takiego edytora to jaki język by się najbardziej nadawał?

Z góry dziękuję za pomoc.

1

Perl

1

Napisz co JEST na WEJŚCIU a co MA BYĆ na WYJŚCIU. Dosłownie przykład zrób

0

@overcq: Dzięki, przyjrzę się temu chociaż wygląda na dosyć skomplikowane dla nieprogramisty.

@ksh: Najprostszy przykład to ten z mojego pierwszego posta. Na początku w pliku jest tylko to:

PUNKTY
4, 8, 10, 245, …

A chcę zautomatyzować dodawanie tego:

OPERACJA, NUMER=1, PUNKT=4
OPERACJA, NUMER=2, PUNKT=8
…

Oczywiście mogę wstawić coś bardziej konkretnego, ale myślę, że to na razie wystarczy do pokazania o co dokładnie chodzi.

0

Masz przykłąd w shellu.

#!/bin/ksh

tf="$( mktemp )"

cat | tr -s "[:space:]," "\n" | tail -n '+2' > "$tf"

count=1
while read -r pun_num
do

  printf "OPERACJA, NUMER=%s, PUNKT=%d\n" "$count" "$pun_num"
  count="$(( count + 1 ))"

done < "$tf"

rm -f "$tf"

Jest nieomal wszystko na tacy, będziesz musiał coś sam popróbować. Ale widzisz jak to wygląda przynajmniej.

0

@ksh: Super, dzięki, na pewno się przyda. A jest coś podobnego na Windows ? Do shella pewnie musiałbym kombinować żeby używać tego na Windowsie. Może Python by się nadał albo nawet C++ ? Byle dało się operować na plikach tekstowych.

0

Najsensowniejsza rada by była - użyj tego języka programowania który znasz najlepiej. Bo ciężko by było znaleźć taki który nie operuje na plikach tekstowych. Problem który chcesz rozwiązać jest problemem kilka kroków dalej po helloworld. Akurat shell jest dosyć trudny do nauki jako pierwszy język jeżeli nic nie programowałeś nigdy. Zrobiłem w shellu bo mi wygodnie to jakieś 5 minut dla mnie było. Miał to być po prostu przykład.

Reasumując nie umiesz w niczym programować. I teraz powstaje pytanie czy w ogóle chcesz się nauczyć czy nie? Panie inżynierze. Ja jestem z z zawodu inż. mechanik i nieźle ogarniam dwa języki programowania. Przydaje mi się to bardzo w pracy acz kolwiek jest to mocniej powiązane z moim hobby, ale to na bok. Mogę Cię jednak zapewnić, że warto się nauczyć dosyć dobrze programować w którymś z popularniejszych języków. Prędzej czy później zaoszczędzisz masę czasu.
Dodatkowo wiele zaawansowanych programów inżynierskich ma możliwość skryptowania. Jak już umiesz coś programować to takie języki wewnętrzne na pewno będą łatwiejsze do opanowania jeżeli zajdzie taka potrzeba.

Pythona polecam choć sam nie umiem w ząb, ( ale zna parę sensownych osób które chwalą )
C++ odradzam ( zaczynałem naukę od tego języka ). - strata czasu.

Aha..

Jak już stwierdzisz, że warto to zainstaluj sobie linuksa na jakimś starym lapku i tam się ucz programować.
Nawet jak nie polubisz linuksa to akurat programowanie będzie bardzo przyjemne.

0

@ksh: Miałem m.in. C++ czy Fortran lata temu na studiach, ale w mojej specyficznej branży inżynierii takie programowanie nie jest mi póki co niezbędne. Ale zaawansowana edycja plików tekstowych może się przydać. Liczyłem na to, że jest jakiś edytor tekstu wspierający taką automatyzację, ale wygląda na to, że zostaje tylko zewnętrzne programowanie. Jak odświeżę sobie C++ to pewnie dam radę coś takiego zrobić tylko nigdy nie używałem go z plikami tekstowymi, ale pewnie faktycznie nie jest to nic trudnego.

0
EngProg napisał(a):

Ale zaawansowana edycja plików tekstowych może się przydać. Liczyłem na to, że jest jakiś edytor tekstu wspierający taką automatyzację, ale wygląda na to, że zostaje tylko zewnętrzne programowanie.

Jaki cudem edytor (= program do ustawiania literek w kolejności) miałby rozumieć dane wejściowe, ich sens i zadanie do wykonania ?

Kiedyś były makroprocesory - preprocesory, jednym z nich był M4
https://en.wikipedia.org/wiki/M4_(computer_language)
Nie mam najmniejszego pojęcia, na ile dziś to jest żywe, bo kiedyś to było 30-50% wdrożeń "przetwórz jeden tekst w drugi"

C++ jest bardzo nieefektywnym językiem do takich zamiarów.
Python, Java , C#
Pod parasolem Eclipse jest trochę javowskich bibliotek preprocesowania tekstu, nigdy nie używałem, raczej większe niz "mniejsze, małe i sprytne"

(ps. ja cię trochę okłamałem. Są edytory, na których to zrobi ... ALE też znaczna ścieżka nauki języka, w jakim się je programuje, bo się po prostu programuje, np Lua w rodzinie Scite / Scintilla / Notepad ++. Programiśc vi robili cudeńka, animacje, pierdoły, Emacsa tak samo. Tyle że żadna z tych opcji nie ejst "od zaraz" do zastosowania)

1 użytkowników online, w tym zalogowanych: 0, gości: 1