[bash][solved]Usuwanie pierwszej lini pliku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Niewpisze
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 paź 2009, 15:22
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[bash][solved]Usuwanie pierwszej lini pliku

Post autor: Niewpisze »

Pisze skrypt który po każdym obrocie pętli wycina pierwszą linię pliku(nazwijmy go jeden)
przenosi go do pliku dwa a w pliku jeden tą linię usuwa. Może ktoś mi powiedzieć jak to zrobić? Jakich komend użyć? Wiem że przyda się head i cat ale co dalej nie wiem
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: beluosus »

Wygląda na to, że chcesz odwrócić kolejność linijek w pliku. Rozwiązać to można np tak:

Kod: Zaznacz cały

tac plik > odwróconyPlik
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Niewpisze
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 paź 2009, 15:22
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: Niewpisze »

beluosus Niestety nie o to chodzi ale dzięki:)
Może faktycznie trochę nie jasno się wyraziłem

Kod: Zaznacz cały

#!/bin/bash

if [ $# -eq 0 ]; then
NAZWA="dosciagniecia"
else
NAZWA=$1
fi

#liczba=`wc -l "$NAZWA" | sed -e "s/[ \ta-z.][ \ta-z.]*//g"`

#echo "$liczba"


while [ `wc -l $NAZWA | sed -e "s/[ \ta-z.][ \ta-z.]*//g"`  -ne 0 ] ;  do


PLIK=`head -1 $NAZWA`

echo "$PLIK"

#qoobster $PLIK

echo $PLIK >> sciagniete

tr "[$PLIK]" "[]" < $NAZWA

done
Chodzi o to że robię "nakładkę" skrypt qoobster. Qoobster pobiera jeden link z pliku i pobiera z rapidshare. Chodzi mi o to żeby po pobraniu przez qoobster linku ten link kasował się z pliku wsadowego (ktory będzie podany wraz z wywołaniem skryptu) i wpisywał się do pliku sciagniete
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: thalcave »

Kod: Zaznacz cały

sed '1d' plik
usuwa pierwszy wiersz pliku plik i wyświetla na ekranie
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
Niewpisze
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 paź 2009, 15:22
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: Niewpisze »

Kod: Zaznacz cały

#!/bin/bash



if [ $# -eq 0 ]; then
NAZWA="dosciagniecia"
else
NAZWA=$1
fi




while [ `wc -l $NAZWA | sed -e "s/[ \ta-z.][ \ta-z.]*//g"`  -gt 1 ];
do



liczba=`wc -l $NAZWA | sed -e "s/[ \ta-z.][ \ta-z.]*//g"`
echo "$liczba"



PLIK=`head -1 $NAZWA`

echo "
$PLIK
"

#qoobster $PLIK

echo $PLIK >> sciagniete

POZOSTALE=`sed '1d' $NAZWA`

echo $POZOSTALE >> $NAZWA


done
Może mi ktoś pomóc wyeliminować błędy?
Czemu jak przenoszę dane do pliku znaki zmiany lini się kasują?
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: beluosus »

Kod: Zaznacz cały

POZOSTALE=`sed '1d' $NAZWA`

echo $POZOSTALE >> $NAZWA
Zrób jakoś tak:

Kod: Zaznacz cały

sed '1d' $NAZWA >> $NAZWA
Niewpisze pisze:Czemu jak przenoszę dane do pliku znaki zmiany lini się kasują?
Ponieważ wszystkie białe znaki dla bash'a są separatorami.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Niewpisze
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 paź 2009, 15:22
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: Niewpisze »

Teraz cuda się dzieją bo w pliku wejściowym zamiast liczba linii maleć to rośnie.
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: dawidgarus »

musisz użyć pliku tymczasowego:

Kod: Zaznacz cały

sed '1d' $NAZWA > tymczasowy
mv tymczasowy $NAZWA
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [bash]Usuwanie pierwszej lini pliku

Post autor: beluosus »

Niewpisze pisze:Teraz cuda się dzieją bo w pliku wejściowym zamiast liczba linii maleć to rośnie.
Tak właśnie myślałem, dlatego podwójnie mnie zdziwił Twój kod.

Kod: Zaznacz cały

sed -i '1d' $NAZWA
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Niewpisze
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 paź 2009, 15:22
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash][solved]Usuwanie pierwszej lini pliku

Post autor: Niewpisze »

Dzięki wielkie działa :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości