Strona 1 z 1
[bash][solved]Usuwanie pierwszej lini pliku
: 18 mar 2010, 18:28
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
Odp: [bash]Usuwanie pierwszej lini pliku
: 18 mar 2010, 22:41
autor: beluosus
Wygląda na to, że chcesz odwrócić kolejność linijek w pliku. Rozwiązać to można np tak:
Odp: [bash]Usuwanie pierwszej lini pliku
: 18 mar 2010, 22:52
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
Odp: [bash]Usuwanie pierwszej lini pliku
: 18 mar 2010, 22:57
autor: thalcave
usuwa pierwszy wiersz pliku plik i wyświetla na ekranie
Odp: [bash]Usuwanie pierwszej lini pliku
: 18 mar 2010, 23:40
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ą?
Odp: [bash]Usuwanie pierwszej lini pliku
: 18 mar 2010, 23:50
autor: beluosus
Kod: Zaznacz cały
POZOSTALE=`sed '1d' $NAZWA`
echo $POZOSTALE >> $NAZWA
Zrób jakoś tak:
Niewpisze pisze:Czemu jak przenoszę dane do pliku znaki zmiany lini się kasują?
Ponieważ wszystkie białe znaki dla bash'a są separatorami.
Odp: [bash]Usuwanie pierwszej lini pliku
: 19 mar 2010, 00:06
autor: Niewpisze
Teraz cuda się dzieją bo w pliku wejściowym zamiast liczba linii maleć to rośnie.
Odp: [bash]Usuwanie pierwszej lini pliku
: 19 mar 2010, 00:57
autor: dawidgarus
musisz użyć pliku tymczasowego:
Kod: Zaznacz cały
sed '1d' $NAZWA > tymczasowy
mv tymczasowy $NAZWA
Odp: [bash]Usuwanie pierwszej lini pliku
: 19 mar 2010, 11:37
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.
Odp: [bash][solved]Usuwanie pierwszej lini pliku
: 19 mar 2010, 21:19
autor: Niewpisze
Dzięki wielkie działa
