Strona 1 z 1
Usuwanie konkretnych numerów linii z pliku (w pętli)
: 08 sie 2010, 21:58
autor: helleluyah
Witam,
Chcę stworzyć taką pętlę:
Kod: Zaznacz cały
#!/bin/bash
count=`wc -l h6.txt | sed 's/h6.txt//g'`
number="1"
while [ $number -le $count ]
do
sed -i "`sed "$number"'q;d' h6.txt`"d testowy.txt
number=$[number+1]
done
gdzie h6.txt to plik, w którym linijka pod linijką są wypisane numery lini które mają być usunięte z pliku testowy.txt. Plik h6.txt ma 27 linii. Po wykonaniu skryptu okazuje się, że usunęło tylko 22 linie a nie 27. Czym może być to spowodowane? Nie mam już pomysłu, jak rozwiązać ten problem. Proszę o pomoc.
Pozdrawiam.
Odp: Usuwanie konkretnych numerów linii z pliku (w pętli)
: 09 sie 2010, 10:23
autor: leon1313
Rekordy w pliku h6.txt masz posortowane od największego do najmniejszego?
Odp: Usuwanie konkretnych numerów linii z pliku (w pętli)
: 09 sie 2010, 14:13
autor: beluosus
Albo posortuj rekordy w pliku h6.txt tak jak proponuje leon1313 albo usuwaj elementy od końca. Pamiętaj, że jak usuwasz pierwszą linię, to ta która była druga teraz zajmuje miejsce pierwszej - częsty błąd.
Odp: Usuwanie konkretnych numerów linii z pliku (w pętli)
: 09 sie 2010, 17:19
autor: helleluyah
Próbowałem zrobić tak:
Kod: Zaznacz cały
#!/bin/bash
count=`wc -l h5.txt | sed 's/h5.txt//g'`
number="1"
while [ $number -le $count ]
do
sed -e "s/`sed $number\"q;d\" h5.txt`/ /g" testowy.txt
number=$[number+1]
done
h5.txt to plik, w którym są wypisane w linie (jako treść), które są do usunięcia z pliki testowy.txt. Jednak skrypt zwraca taki oto błąd:
Kod: Zaznacz cały
sed: -e wyrażenie #1, znak 10: nieznana opcja dla polecenia `s'
Oczywiście linii błędu jest tyle, ile linii jest w pliku h5.txt. Co robię źle?
Odp: Usuwanie konkretnych numerów linii z pliku (w pętli)
: 09 sie 2010, 22:52
autor: dk75
Kod: Zaznacz cały
#!/bin/bash
awk 'BEGIN{getline var0 < "/tmp/h5.txt"} {if (NR!=var0) {print} else getline var0 < "/tmp/h5.txt"}' /tmp/testowy.txt
Odp: Usuwanie konkretnych numerów linii z pliku (w pętli)
: 10 sie 2010, 11:59
autor: borzole