Mam polecenie:
$ awk '{ print length($0); }' /etc/passwd
Wyświetla liczbę znaków każdej linii w pliku passwd :
52
52
61
48
81
58
etc.
Jak wydrukować liczbę znaków tylko dla pierwszych n wierszy?
Na przykład - dla pierwszych 3 wierszy dałoby coś takiego:
52
52
61
command-line
text-processing
awk
bambosze_babuni
źródło
źródło
awk '(NR<=line) && length($0) {print length($0)}' line=3 file
Odpowiedzi:
Powiedz,
awk
żeby wyjść, gdy przeczytano wystarczającą liczbę linii:Zauważ, że to rozwiązanie ignoruje puste linie, chociaż nie dla ich liczby.
źródło
Bezpośrednia wersja Awk (nie tak wydajna jak @ Thor), ale nieco bardziej przejrzysta:
źródło
awk '{ print length } NR>=3 { exit }' /etc/passwd
, głosowałbym za tym.Możesz go wykonać
awk
tylko poleceniem, jak to dobrze opisali @Thor i @JJoao (+1 ode mnie)Możesz łączyć
awk
i zahead
pomocą parametru-n
następującą liczbę linii, jak opisano poniżej:Dziękujemy za sugestię @ Maerlyn do wykonania w tej kolejności:
head | awk
np. Otrzymasz pierwsze 3 linie używając:
głowa człowieka
źródło
head -n3 /etc/passwd | awk
więc awk nie musi przetwarzać całego pliku.head
.head
pierwsze użyteczne rozwiązanie przyszło mi do głowy. Poprosiłem o odpowiedź na @Thor, @JJoao, która używaawk
tylko rozwiązania.