Sed, usuwanie linijki z pliku...

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Sed, usuwanie linijki z pliku...

Post autor: kodama »

I wszystkich linijek następujących po niej.
W czym problem? Rzecz przecież trywialna. A i owszem:

Kod: Zaznacz cały

 sed -i 'numer_wiersza,$d' [I]plik[/I]
Kwestia jest taka, że u mnie numer_wiersza jest zmienną i kiedy sed ma się wykonać, to sieje mi takim błędem:

Kod: Zaznacz cały

sed: -e wyrażenie #1, znak 3: dodatkowe znaki po poleceniu
Fragment kodu:

Kod: Zaznacz cały

ostatni=`cat .last`;

linijka=`grep -in $ostatni .linki | cut -d ':' -f1`;

sed -i '$linijka,$d' .linki;
2 pierwsze linijki wyciągają mi numer wiersza, trzecia ma z pliku .linki usunąć wiersz o numerze $linijka i wszystkie wiersze po nim, aż do końca pliku. Potwierdzam, że zmienna $linijka jest, że tak powiem, wyciągnięta zawsze poprawnie - jest to liczba z przedziału 1 - 10, najczęściej. Kwestia tylko z tym podstawieniem do seda. Próbowałem tą zmienną obejmować w ' ' oraz " " ale bez sukcesu - wtedy mu się nawet nie podoba ' albo ". Pliki zawierają linki [url]http://.[/url]..
Ktoś z szanownych linuksowych programistów amatorów albo pro może podpowiedzieć o co się rozchodzi?
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Używając zmiennej jako numeru linii daj ją przed pojedynczy cudzysłów:

Kod: Zaznacz cały

sed -i $linijka',$d' .linki;
Powinno spełnić Twoje oczekiwania ;)
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

No kurde, wygląda, że teraz śmiga :D Dzięki serdeczne kolego. A to z czego to wynika, że tak powinno być? Bo w innych poleceniach seda zmienną można sobie wstawiać w miarę normalnie, a tutaj takie coś.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Jakby Ci to ładnie ujać <mysli> :) Sam całkiem niedawno walczyłem z podobnym problemem - potrzebowałem 'wyjmować' wskazane numery linii... i suma suma rum, dopiero w takiej formie mi to zadziałało. Czas mnie pilił i nie miałem już jak zagłębić się w manuala w celu rozjaśnienia/wyjaśnienia tego tworu :)
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

Aaa, rozumiem :) Czyli tak trochę metodą prób i błędów :) Też kilka tematów udało mi się obejść/pokonać takim sposobem. W każdym razie dzięki jeszcze raz.
ODPOWIEDZ