Jak policzyć liczbę linii wyjścia?

30

Powiedzmy, że mam program:

Calculate.py

Czy istnieje wiersz poleceń unixa, który zlicza liczbę wierszy wyprowadzonych z mojego programu Calculate.py?

Mehsan
źródło

Odpowiedzi:

51

Możesz przesłać dane wyjściowe do wc. Możesz użyć -lflagi do liczenia linii. Uruchom program normalnie i użyj potoku, aby przekierować dowc.

python Calculate.py | wc -l

Alternatywnie możesz przekierować wyjście swojego programu do pliku, powiedzmy calc.out, i uruchomić wcna tym pliku.

python Calculate.py > calc.out
wc -l calc.out
cutrightjm
źródło
3
Takie małe rzeczy sprawiają, że orurowanie jest tak potężne. Zrobilibyśmy dobrze, aby przywrócić tę interoperacyjność z powrotem do rozwoju oprogramowania, co, jak sądzę, na tym właśnie polega Programowanie Funkcjonalne.
Joshua Pinter
1
@JoshuaPinter z drugiej strony, jeśli chcesz tylko potokować liczbę linii do innej funkcji, musisz teraz ręcznie parsować dane wyjściowe wc. Na szczęście jest to łatwe ( cut -f1 -d' '), ale to samo nie dotyczy każdej komendy. Można powiedzieć coś o podejściu Powershell, aby prymitywny wiersz poleceń był „obiektem”, a nie strumieniem tekstu.
shadowtalker
@shadowtalker Nie znam Powershell, ale przekazanie objects zamiast Strings ma sens. W pewnym momencie chciałbym zagłębić się w więcej narzędzi wiersza poleceń.
Joshua Pinter
1

Powyżej komunikacji (wc -l) policzy również puste linie. więc lepiej użyć poniższego polecenia, które usuwa puste linie i policzy je

python Calculate.py |sed '/^$/d'| awk '{print NR}'| sort -nr| sed -n '1p'
Praveen Kumar BS
źródło