다음을 포함하는 "shoplist.txt"라는 텍스트 파일이 있습니다.
drinks water cola fanta
fruit banana orange
각 행에 몇 개의 항목이 있는지 알고 싶습니다. "컷" 기능을 이용해서 음료나 과일을 추출할 수 있는데, 한 줄에 몇 단어가 있는지 어떻게 세나요?
내 실제 코드는 다음과 같습니다
fileLine=`cat file.txt`
#Here I get each line saving it to fileLine
for line in $fileLine; do
echo
((aux++))
done
하지만 이 코드는 매번 %fileLine에 저장되기 때문에 작동하지 않습니다(음료, 물, 콜라 등).
첫 번째 줄을 구한 다음 해당 줄의 단어 수를 어떻게 계산할 수 있나요?
답변1
가능한 경우 awk
현재 NF
줄의 필드 수(필드는 기본적으로 공백으로 구분된 단어입니다).
사용
awk '{ print NF, $0 }' inputfile
귀하의 입력 예를 바탕으로 다음이 인쇄됩니다.
4 drinks water cola fanta
3 fruit banana orange
답변2
배쉬에서 wc
:
IFS=$'\n'
while read line; do
wc -w <<< "$line"
done < file.txt
wc
파일의 줄 수, 단어 수, 바이트 수를 셉니다. 쉘 루프를 사용하면 한 줄의 단어 수를 셀 수 있습니다.
답변3
(단일) 숫자와 관련되어 있기 때문에 약간 맥락이 다를 수 있지만(유사하지만) 이 매우 간단한 awk 규칙은 파일에서 각 줄의 숫자가 4배 미만인 줄만 유지하는 데 도움이 됩니다.
awk -F [5,6,7,8,9] 'NF-1<4' IN > OUT
'NF-1' 0, 1, 2 또는 3개의 높은 숫자(더 이상은 없음)의 정확한 개수를 가져옵니다.