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 modyfikujący grupę plików  (Przeczytany 6954 razy)

gzwol

  • Gość
skrypt modyfikujący grupę plików
« dnia: 2007-06-06, 16:00:14 »
witam,
mam kłopot muszę dodać do grupy plików tekstowych kilka linijek tekstu, w określonym miejscu oczywiście. Proszę o informację jak można zrobić to najprościej.

xis

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #1 dnia: 2007-06-06, 16:31:20 »
2007-06-06 16:00:14 gzwol napisał:

> witam,
 > mam kłopot muszę dodać do grupy plików tekstowych kilka linijek tekstu, w określonym miejscu
 > oczywiście. Proszę o informację jak można zrobić to najprościej.

Najlepiej za pomocą for np.

for i in `ls *doc`; do echo 'tekst' >> $i; done

Doda słowo 'tekst' do końcówek plików zakończonym rozszerzeniem '*doc'.

Jeśli chcesz bardziej zawężyć wyszukiwanie plików z określonej grupy, to możesz użyć polecenia 'find' (man find) i zamiast 'ls *doc' użyć właśnie niego.

gzwol

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #2 dnia: 2007-06-06, 17:11:16 »
2007-06-06 16:31:20 xis napisał:

 >
 > Najlepiej za pomocą for np.
 >
 > for i in `ls *doc`; do echo 'tekst' >> $i; done
 >
 > Doda słowo 'tekst' do końcówek plików zakończonym rozszerzeniem '*doc'.
 >
 > Jeśli chcesz bardziej zawężyć wyszukiwanie plików z określonej grupy, to możesz użyć polecenia
 > 'find' (man find) i zamiast 'ls *doc' użyć właśnie niego.
 >
WOW prosto i działa - dzięki, chciałbym jednak dodać tych parę linijek w określonym miejscu, np. przed jakimś tagiem typu:

xis

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #3 dnia: 2007-06-06, 17:31:46 »
2007-06-06 17:11:16 gzwol napisał:


 > WOW prosto i działa - dzięki, chciałbym jednak dodać tych parę linijek w określonym miejscu,
 > np. przed jakimś tagiem typu:

Obawiam się, że nie rozumiem. Chodzi Ci o 'określone miejsce w pliku', tak? Zamiast dopisywania, chcesz 'wpisywać' to w treść? Poczytaj o np. Sedzie (man sed) - możesz za jego pomocą m. in. podmieniać zawartość fragmentu pliku innym fragmentem :)

Np.

cat plik.txt | sed s/test/'dwa testy'/g

Podmieni wszystkie wystąpienia frazy 'test' w pliku plik.txt na frazę 'test.txt'.

Powodzenia

gzwol

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #4 dnia: 2007-06-06, 17:34:02 »
2007-06-06 17:31:46 xis napisał:
 
 > Obawiam się, że nie rozumiem. Chodzi Ci o 'określone miejsce w pliku', tak? Zamiast
 > dopisywania, chcesz 'wpisywać' to w treść? Poczytaj o np. Sedzie (man sed) - możesz za jego
 > pomocą m. in. podmieniać zawartość fragmentu pliku innym fragmentem :)
 >
 > Np.
 >
 > cat plik.txt | sed s/test/'dwa testy'/g
 >
 > Podmieni wszystkie wystąpienia frazy 'test' w pliku plik.txt na frazę 'test.txt'.
 >
 > Powodzenia
 >
tak chodzi o określone miejsce w pliku

xis

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #5 dnia: 2007-06-08, 10:21:23 »
Popatrz też na 'man cut', 'man wc' :)
Przy okazji warto poznać tajniki języka 'awk'.

Powodzenia

xis

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #6 dnia: 2007-06-08, 10:23:01 »
2007-06-06 17:31:46 xis napisał:


 > cat plik.txt | sed s/test/'dwa testy'/g
 >
 > Podmieni wszystkie wystąpienia frazy 'test' w pliku plik.txt na frazę 'test.txt'.

Oczywiście byk! Podmieni na frazę 'dwa testy'! :)

zuru

  • Gość
skrypt modyfikujący grupę plików
« Odpowiedź #7 dnia: 2008-03-07, 11:55:28 »
Potrzebuje skladni do znalezienia plikow z ciaglem znakow a nastepnie podmianie tego ciagu w znalezionych plikach na inny.
Tak szukam plikow
grep -l -i 'tekst' *
Uzyskuje liste plikow
1.txt
2.txt
...

do podmiany chce wykorzystac sed,

grep -l -i 'spool c:\\\\' * | cat | sed -e 's/STARYTEKST/NOWYTEKST/'

nie dziala :/
Jakies pomysly? Przekazujac do sed liste plikow nie zaczytuje plikow tylko traktuje to jako tekst na ktorym nalezy nanosic zmiany.. oraz nei iwem jak przy pipepingach wymusic by sed pobral plik z | i bez parametrow dokonal w nim zmian i je zapisal(nawet jak uda mi sie wymusic zmiane na 1 pliku to tylko wypisuje ja na ekranie i nie zapisuje do pliku).
W operacji nie powinny bac udzial pliki posredniczace( sed oldfire> new file).