Strona 1 z 1
Jak działa dokładnie wc -l ?
: 21 mar 2016, 22:56
autor: arhetyp
Witam,
bardzo proszę pomóc mi zrozumieć wynik działania poniższego polecenia:
plik.txt np wygląda startowo tak:
linia1
linia2
Zatem wc -l zwraca 2 i potem zapisuje/nadpisuje to ponownie do tego samego pliku plik.txt.
Ja zatem oczekiwałbym, że plik będzie wyglądać:
Dlaczego wygląda tak:
?
Będę bardzo wdzięczny - domyślam się, że to jakiś prosty motyw a nie potrafię tego zrozumieć...
Pozdrawiam,
Arek
# thalcave: dodałem tagi 
Re: Jak działa dokładnie wc -l ?
: 22 mar 2016, 11:18
autor: arhetyp
Bardzo proszę o wyjaśnienie:)
Re: Jak działa dokładnie wc -l ?
: 22 mar 2016, 15:21
autor: thalcave
Spróbuję ci to wyjaśnić.
Spróbuj podejść do polecenia jako całości:
Uruchamiasz polecenie wc z parametrem -l. Do polecenie otwierasz plik plik.txt do odczytu i otwierasz plik plik.txt do nadpisania. Do nadpisania co oznacza, że ten plik automatycznie jest zerowany.
Następnie wc pobiera zawartość plik.txt (czyli nic) i na niej operuje wynikiem czego jest 0.
Polecenie, które działa tak jak chcesz to:
No ale oryginalna zawartość nie jest nadpisywana

Re: Jak działa dokładnie wc -l ?
: 22 mar 2016, 20:29
autor: arhetyp
Bardzo dziękuję za odpowiedź.
Rozumiem, aczkolwiek jest to póki co dla mnie rozumienie trochę "na słowo" bo nie załapałem jeszcze takiej systemowej logiki myślenia:)
Z tego co piszesz to w ogóle nie da się zrobić takiej operacji jak ja sobie to wyobrażałem bo przykład z >> dodaje ostatni wiersz więc finalnie plik będzie miał 3 linie i wynik będzie zatem 3 a nie jak ja się spodziewałem 1 (czyli jedna linia z liczbą wierszy).
Dziękuję - pewnie będę miał niebawem kolejne pytania.
Przy okazji, czy możesz polecić jakaś książkę w tych tematach?
Pozdrawiam,
Arek
Re: Jak działa dokładnie wc -l ?
: 22 mar 2016, 23:51
autor: thalcave
Chyba najlepsze są jednak artykuły w sieci. Ksiązki z regóły sporo kosztują a jak wychodzą (zwłaszcza po polsku) to są już zdeaktualizowane.
Tak przy okazji to nie bardzo rozumiem sens zliczania wierszy w pliku i nadpisywania ich w jednym czasie.