W przypadku bardzo dużych plików używanie numeru sort
będzie dość powolne. W tym przypadku lepiej jest użyć czegoś podobnego awk, który potrzebuje tylko jedno hasło:
$ awk -F= 'BEGIN { max = -inf } { if ($3 > max) { max = $3; line = $0 } } END { print line }' test.txt
log2c=3.0 rate=89.5039
Złożoność czas tej operacji jest liniowa, a złożoność przestrzeń jest stała (i mały). Objaśnienie:
awk -F= '...' test.txt
: Wywołuje awk na Test.txt, używając =
jako separator pól
BEGIN { max = -inf }
: Initialise max
na coś, co zawsze będzie mniejszy niż cokolwiek czytasz.
{ if ($3 > max) { max = $3; line = $0; } }
: Dla każdej linii wejściowej, jeśli max
jest mniejsza niż wartość pola trzeciego ($3
), następnie zaktualizować go i zapamiętać wartości bieżącej linii ($0
)
END { print line }
: Wreszcie drukować linię my zapamiętane podczas odczytu danych wejściowych.
Czy istnieje powód, dla którego nie robisz tego w Awk? To powinno być trywialne po krótkim tutorialu wprowadzającym. – tripleee
Rozwiązanie devnull doskonale działa w bash. Jednak moja nazwa pliku wejściowego pochodzi od zmiennej $ filename. Tak więc umieszczam te słowa w echo "..." | sh. wybacz mi, jestem nowicjuszem. – Eman