Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Skrypt podmieniający linię w pliku tekstowym na inną  (Przeczytany 4082 razy)

zeite

  • Gość
Witam,

Nie umiem sobie poradzic z jedna rzecza, mianowicie potrzebuje podmienic wybrana linie w pliku tekstowym na inna. Wszedzie znajduje rozwiazania oparte tylko na Reg Ex (ktorego nie potrafie stworzyc) z uzyciem sed lub/i awk. Troche to rzucanie sie z motyka na ksiezyc, czy naprawde nie ma jakiegos programu badz skryptu ktory cos takiego zrobi samemu? Cos na zasadzie diff-patcha?

Generalnie sprawa wyglada tak ze jest sobie plik test.txt, a jego zawartosc to:

  "tester": {
    "visible": true,
    "x": 215,
    "w": 600,
    "y": 3
  }
Potrzebuje prostej metody aby podmienic cale linijki nr. 3 i 5 na odpowiednio:

    "x": 5,
    "y": 250

Normalnie uzylbym do tego wlasnie patch diff, ale wartosci x oraz y w pliku test.txt zmieniaja sie na inne, i nie zawsze maja 215 i 3, i tutaj juz ta metoda sobie nie radzi.

Czyli potrzeba sposobu aby bez wzgledu co aktualnie znajduje sie w tych liniach, podmienic w calosci na wybrane przeze mnie nowe linie.

Dzieki z gory za jakies nakierowanie.

ps. nie jest to jakies zadanie domowe, jestem modderem jednej z popularnych gier, i robie pewna jej modyfikacje.

chmooreck

  • Gość
Skrypt podmieniający linię w pliku tekstowym na inną
« Odpowiedź #1 dnia: 2013-12-20, 14:11:30 »
Zaprzyjaźnij się z wyrażeniami regularnymi i użyj sed'a ;)
To jest proste.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Skrypt podmieniający linię w pliku tekstowym na inną
« Odpowiedź #2 dnia: 2013-12-20, 14:34:49 »
Tylko przykład - trochę bardziej skompikowany
 a=dd ; sed -i -e 's/ab/'$a'/g' plik
podmieni ab na dd

Podobnie bym postąpił przy zamianie, czyli linie 3 i 5 zapisałbym do nowego pliku
( ma to posłużyć jako buffor-pamięć , a następnie bym te linie zamienił np.
powyższym sed-em.
Przy zakończeniu skryptu możesz dodać kasowanie owych plików,
które posłużyły jako pamięć.

Ladnie wygląda, może mi się kiedyś też link przyda.
http://www.nfire.eu/?m=articles&article_id=43
( przepraszam za zasmiecanie linkami :) )


Edit.
Może z tymi plikami na dysku nie był najlepszy pomysł, jest jeszcze RAM
http://newbie.linux.pl/?id=article&show=162
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

zeite

  • Gość
Skrypt podmieniający linię w pliku tekstowym na inną
« Odpowiedź #3 dnia: 2013-12-20, 15:21:02 »
Dzieki :)

Stworzylem takiego regexpa:
("x".\\s)(\\d+)(,)

albo

(.x.:\\s\\d+,)
Teraz jeszcze zaimplementowac to do sed'a badz awk.