[bash][solved]Usuwanie pierwszej lini pliku
-
- 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
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
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
- beluosus
- 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
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
-
- 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
beluosus Niestety nie o to chodzi ale dzięki:)
Może faktycznie trochę nie jasno się wyraziłem
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
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
- thalcave
- 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
Kod: Zaznacz cały
sed '1d' plik
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
-
- 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
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
Czemu jak przenoszę dane do pliku znaki zmiany lini się kasują?
- beluosus
- 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
Kod: Zaznacz cały
POZOSTALE=`sed '1d' $NAZWA`
echo $POZOSTALE >> $NAZWA
Kod: Zaznacz cały
sed '1d' $NAZWA >> $NAZWA
Ponieważ wszystkie białe znaki dla bash'a są separatorami.Niewpisze pisze:Czemu jak przenoszę dane do pliku znaki zmiany lini się kasują?
-
- 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
Teraz cuda się dzieją bo w pliku wejściowym zamiast liczba linii maleć to rośnie.
-
- 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
musisz użyć pliku tymczasowego:
Kod: Zaznacz cały
sed '1d' $NAZWA > tymczasowy
mv tymczasowy $NAZWA
- beluosus
- 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
Tak właśnie myślałem, dlatego podwójnie mnie zdziwił Twój kod.Niewpisze pisze:Teraz cuda się dzieją bo w pliku wejściowym zamiast liczba linii maleć to rośnie.
Kod: Zaznacz cały
sed -i '1d' $NAZWA
-
- 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
Dzięki wielkie działa 

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