지정된 줄 수의 단어 수를 계산하는 방법은 무엇입니까?

지정된 줄 수의 단어 수를 계산하는 방법은 무엇입니까?

줄 수가 명령줄 인수로도 지정된 파일에서 단어를 계산하는 데 흥미로운 문제가 있습니다. 예를 들어, 입력 텍스트 파일에 다음이 있는 경우 -

Unix is an OS
Linux is the child of Unix
Unix is fun.
End of File

실행할 명령은 다음과 같습니다.

bash test.sh unix.txt 3

문장이 포함된 테스트 파일은 어디에 unix.txt있고, 3은 단어 수를 계산하는 줄 수입니다. 답은 13이다.

기본적인 명령을 사용해 보았지만 wc그 중 어느 것도 정답을 제시하지 못했습니다.

그래서 for 루프를 사용해 보았지만 이러한 행 번호만 가져오는 방법을 지정할 수 없습니다.

답변1

head -n 3 unix.txt파일의 처음 세 줄을 가져온 다음 다음으로 파이프할 수 있습니다.wc

따라서 쉘 변수에 저장된 파일 이름의 경우 $file:

{ head -n 3 | wc -w; } < "$file"

또는:

head -n 3 -- "$file" | wc -w

후자는 -일부 head구현을 통해 호출된 파일에 대해 작동하지 않고 파일을 열 수 없을 때 오류 메시지(를 통해)와 함께 출력되며 0, 이 경우 일부 쉘에서 사용하지 않으면 실패 종료 상태가 손실됩니다 head( 비표준) 옵션은 에 있습니다 .pipefail

답변2

또한 시도

awk -v"LNR=$2" 'NR > LNR {print SUM; exit} {SUM+=NF}' file
13

답변3

우리는 할 수있어awk

awk '{print NF}' unix.txt

단어 및 줄 수

awk '{print NF" "$0}' unix.txt

줄 번호가 포함된 단어 수

awk '$0="line"NR": "NF'  unix.txt
awk '$0="line"NR": "NF'  unix.txt | grep line3

답변4

스크립트에는 두 개의 매개변수가 있습니다.

따라서 스크립트에서는 다음과 같이 사용할 수 있습니다.

sed -n "/\w/{1,$2 p;}"  $1 | wc -w

$1파일 이름이 포함된 파일에는 검색 $2해야 하는 총 줄 수가 포함되어 있습니다.

관련 정보