awk-파일에서 처음 n 줄의 문자 수를 인쇄하는 방법은 무엇입니까? 파일 에 모든

나는 명령을 가지고있다 :

$ awk '{ print length($0); }' /etc/passwd

passwd 파일 에 모든 줄의 문자 수를 인쇄 합니다.

52
52
61
48
81
58
etc.

처음 n 줄에 대해서만 문자 수를 인쇄하려면 어떻게해야합니까?

예를 들어-처음 3 줄의 경우 다음과 같이 나타납니다.

52
52
61


답변

에게 awk충분히 라인을 읽고되었을 때 종료 :

awk '$0 = length; NR==3 { exit }' /etc/passwd

이 솔루션은 빈 줄을 무시하지만 빈 줄은 무시합니다.


답변

직접적인 Awk 버전 (@ Thor ‘s만큼 효율적이지는 않지만)

awk 'NR <= 3 {print length}' /etc/passwd

답변

awk@Thor와 @JJoao (+1 from me)에서 잘 설명 된 것처럼 명령만으로 실행할 수 있습니다.

당신은 결합 할 수 있습니다 awkhead매개 변수 -n아래에 설명 된대로 행의 수에 의해 다음과 같습니다 :

@Maerlyn 제안을 다음 순서로 실행 해 주셔서 감사합니다. head | awk

예를 들어 다음을 사용하여 처음 3 줄을 얻습니다.

head -n3 /etc/passwd | awk '{ print length($0); }'

머리 남자

-n, --lines=[-]K
    print the first K lines instead of the first 10; with the leading '-', print all but the last K lines of each file