파일에 있는 매 4개의 단어 수를 셉니다.

파일에 있는 매 4개의 단어 수를 셉니다.

나는 tsv 단어 파일을 가지고 있으며 파일에 몇 개의 사중주가 있는지 계산하고 파일 이름과 사중주 수를 csv 파일로 내보내는 bash를 작성하고 싶습니다.

예를 들어, fileName.tsv 파일의 경우: I,have,this,word,cat,home,dog,day

결과는 fileName.tsv,2의 csv 파일이 됩니다.

답변1

이 같은

$ echo "I,have,this,word,cat,home,dog,day"|gawk -F, '{printf("%d\n", NF/4)}'
2

답변2

사중주 수를 구하려면 정수 나누기를 사용하여 4로 나누어 단어 수를 세면 됩니다.

먼저, sed 's/,/ /g'단어 수를 쉽게 파싱할 수 있도록 with 로 바꾸겠습니다. 그런 다음 그것을 입력하여 단어 수를 세었습니다. 마지막으로 나는 정수 나누기를 수행하곤 했습니다. 다음과 같습니다.,wc -wbash$(( x / 4 ))

$ cat fileName.tsv 
I,have,this,word,cat,home,dog,day

$ sed 's/,/ /g' fileName.tsv
I have this word cat home dog day

$ sed 's/,/ /g' fileName.tsv | wc -w
8

$ echo $(( $(sed 's/,/ /g' fileName.tsv | wc -w) / 4 ))
2

csv 파일을 만들기 위해 <filename,quartet>을 사용한다고 언급하셨습니다. bash에서 루프를 사용하여 패턴과 일치하는 각 파일을 구문 분석할 수 있도록 두 줄 이상이 필요하다고 가정합니다.

for filename in *.tsv; do
  quartet=$(( $(sed 's/,/ /g' $filename | wc -w) / 4 ))
  echo $filename,$quartet >> output.csv
done

관련 정보