Potrzebujesz pomocy z C, C++, perl, python, itp.
aksnet
Posty: 53 Rejestracja: 25 maja 2013, 13:44
Lokalizacja: ifb0
Post
autor: aksnet » 04 października 2017, 12:07
mam plik z danymi np. data.txt i skrypt format.sh
formatowanie danych uruchamiam tak:
skrypt format.sh czyta linia po linii plik data.sh przetwarza go
np. w pętli
czy po zakończeniu takiej pętli w skrypcie
jest jakaś możliwość czytania potoku znów od początku?
dedito
Moderator
Posty: 3581 Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice
Post
autor: dedito » 04 października 2017, 13:44
Jak najbardziej, ta składnia wywołania jakaś dziwna.
Czemu w samym skrypcie nie zaciągasz tego pliku do formatowania?
aksnet
Posty: 53 Rejestracja: 25 maja 2013, 13:44
Lokalizacja: ifb0
Post
autor: aksnet » 04 października 2017, 14:09
Ty chyba powinno być oczywiste.
Po to żeby skrypt format.sh uruchomić dla dowolnego pliku
bez niepotrzebnego edytowania format.sh
lizard
Beginner
Posty: 287 Rejestracja: 08 lutego 2016, 18:47
Post
autor: lizard » 04 października 2017, 14:14
Możesz podać plik z danymi jako parametr skryptu "
format.sh data.txt " i odwoływać się do niego:
Kod: Zaznacz cały
InData="${1}"
while read Line; do
echo "${Line}"
done < "${InData}"
Możesz też czytać ze standardowego wejścia, jak do tej pory, a wszystko, co odczytasz zapisywać do pliku tymczasowego i sięgać, gdy zajdzie taka potrzeba:
Kod: Zaznacz cały
TmpFile="$(mktemp /tmp/format.sh-XXXX)"
> "${TmpFile}"
while read Line; do
echo "${Line}" >> "${TmpFile}"
:
done
while read Line; do
echo "${Line}"
done < "${TmpFile}"
:
rm -f "${TmpFile}"
:
Ciekawy pomysł na wielokrotne wykorzystanie w pętli ostatnio odczytanej linii jest ns
Stack Overflow :
Kod: Zaznacz cały
recycle=false
some_command | while $recycle || read line
do
if something then
read line
recycle=false
else
# how do I "unread"?
recycle=true
fi
done
dedito
Moderator
Posty: 3581 Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice
Post
autor: dedito » 04 października 2017, 14:22
aksnet pisze: 04 października 2017, 14:09
Ty chyba powinno być oczywiste.
Po to żeby skrypt format.sh uruchomić dla dowolnego pliku
bez niepotrzebnego edytowania format.sh
Oczywiste to by było gdybyś wywoływał jak to @Lizard pokazał na przykładzie wywołania argumentu $1