![지정된 줄 수의 단어 수를 계산하는 방법은 무엇입니까?](https://linux55.com/image/168483/%EC%A7%80%EC%A0%95%EB%90%9C%20%EC%A4%84%20%EC%88%98%EC%9D%98%20%EB%8B%A8%EC%96%B4%20%EC%88%98%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
줄 수가 명령줄 인수로도 지정된 파일에서 단어를 계산하는 데 흥미로운 문제가 있습니다. 예를 들어, 입력 텍스트 파일에 다음이 있는 경우 -
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
해야 하는 총 줄 수가 포함되어 있습니다.