Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
wiem, że:
echo "treść" > plik
nadpisze plik treścią, że:
echo "treść" >> plik
dopisze treść na koniec pliku.
moje pytanie: jak wstawić treść pomiędzy fragment x i y pliku?
Offline
mozesz zrobic cos takiego
head -2 a >> b; echo aaaa >>b; tail -1 a >>b
gdzie a i b to sa pliki, mozesz ale po co?
Napisanie programu w C nie zajmnie Ci wiecej niz 5 min.
Offline
mozesz zrobic cos takiego
Kod:
head -2 a >> b; echo aaaa >>b; tail -1 a >>bgdzie a i b to sa pliki, mozesz ale po co?
tylko że mi chodziło o fragmenty tekstu danego pliku, nie o pliki. czyli np.mam plik:
wiersz1 wiersz2 wiersz3 wiersz4
i chcę wstawić wierszX pomiędzy np. wiersz 2 i 3
Napisanie programu w C nie zajmnie Ci wiecej niz 5 min.
być może dokładnie tyle by mi zajęło, gdybym znał C :) póki co bawię się prostymi skryptami w bashu :)
Offline
kod ktory dalem wstawi linie miedzy istniejace linie w pliku i wynik zapisze do nowego pliku (musisz oczywiscie dobrze sustawic wartosci przy tail i head). jak chcesz by plik tak samo sie nazywal to doloz rm i mv
Offline
coś się nie potrafimy zrozumieć. moje rozumowanie Twojego skryptu jest takie, że tekst "aaaa" zostanie wstawiony pomiędzy wiersz o treści "a" a wiersz o treści "b". czyli po dostosowaniu zmiennych do mojego przykładu pliku powinno to wyglądać tak:
head -2 wiersz2 >> wiersz3; echo wierszX >>wiersz3; tail -1 wiersz2 >>wiersz3
ale to daje wynik:
head: nie można otworzyć `wiersz2' do czytania: Nie ma takiego pliku ani katalogu tail: nie można otworzyć `wiersz2' do czytania: Nie ma takiego pliku ani katalogu
więc próbowałem pokombinować i wyszedł mi skrypt:
head -2 plik >> wiersz3; echo wierszX >> wiersz3; tail -1 plik >> wiersz3
tylko że on owszem, wstawia "wierszX" ale nie pomiędzy "wiersz2" a "wiersz3", lecz zastępuje "wiersz3"
Offline
head -2 plik >> plik_tmp; echo wierszx >> plik_tmp; tail -2 plik >> plik_tmp; rm plik; mv plik_tmp plik
parametr przy head to ilosc wierszy z poczatku pliku ktore maja byc przepisane a parametr przy tail to ilosc wierszy z konca pliku
Offline
no to teraz zrozumiałem :D tylko że jak skrypt będzie uruchomiony, to on nie ma rozpoznać miejsca, gdzie ma być dokonany wpis poprzez numer wiersza, tylko jego treść, bo może się on w różnych sytuacjach w różnym miejscu znaleźć...
Offline