Nowe posty

Autor Wątek: skrypt modyfikujący grupę plików  (Przeczytany 6672 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 3
    • Zobacz profil
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.

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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.
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 3
    • Zobacz profil
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:

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 3
    • Zobacz profil
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

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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'! :)
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 1
    • Zobacz profil
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).