반응형
명령 줄 도구를 사용하여 파일의 줄 길이 계산
문제
다양한 길이의 줄이 많은 긴 파일이있는 경우 각 줄 길이의 발생 횟수를 어떻게 계산할 수 있습니까?
예:
file.txt
this
is
a
sample
file
with
several
lines
of
varying
length
달리기 count_line_lengths file.txt
는 다음을 제공합니다.
Length Occurences
1 1
2 2
4 3
5 1
6 2
7 2
아이디어?
count.awk :
{
print length($0);
}
...
$ awk -f count.awk input.txt | sort | uniq -c
1 1
2 2
3 4
1 5
2 6
2 7
순수 awk
awk '{++a[length()]} END{for (i in a) print i, a[i]}' file.txt
4 3
5 1
6 2
7 2
1 1
2 2
bash
어레이 사용 :
#!/bin/bash
while read line; do
((histogram[${#line}]++))
done < file.txt
echo "Length Occurrence"
for length in "${!histogram[@]}"; do
printf "%-6s %s\n" "${length}" "${histogram[$length]}"
done
실행 예 :
$ ./t.sh
Length Occurrence
1 1
2 2
4 3
5 1
6 2
7 2
$ perl -lne '$c{length($_)}++ }{ print qq($_ $c{$_}) for (keys %c);' file.txt
산출
6 2
1 1
4 3
7 2
2 2
5 1
기본 유닉스 유틸리티 만 사용하여이를 수행 할 수 있습니다.
$ printf "% s % s \ n"$ (for line in $ (cat file.txt); do printf $ line | wc -c; done | sort -n | uniq -c | sed -E "s / ([ 0-9] +) [^ 0-9] + ([0-9] +) / \ 2 \ 1 / ") 1 1 2 2 4 3 5 1 6 2 7 2
어떻게 작동합니까?
- 다음은 소스 파일입니다.
$ cat file.txt 이 이다 ㅏ 견본 파일 와 몇몇의 윤곽 의 다양한 길이
- 소스 파일의 각 행을 길이로 바꿉니다.
$ ( cat file.txt ); printf $ line | wc -c; 끝난 4 2 1 6 4 4 7 5 2 7 6
- Sort and count the number of length occurrences:
$ for line in $(cat file.txt); do printf $line | wc -c; done | sort -n | uniq -c 1 1 2 2 3 4 1 5 2 6 2 7
- Swap and format the numbers:
$ printf "%s %s\n" $(for line in $(cat file.txt); do printf $line | wc -c; done | sort -n | uniq -c | sed -E "s/([0-9]+)[^0-9]+([0-9]+)/\2 \1/") 1 1 2 2 4 3 5 1 6 2 7 2
If you allow for the columns to be swapped and don't need the headers, something as easy as
while read line; do echo -n $line | wc -m; done < file | sort | uniq -c
(without any advanced tricks with sed
or awk
) will work. The output is:
1 1
2 2
3 4
1 5
2 6
2 7
One important thing to keep in mind: wc -c
counts the bytes, not the characters, and will not give the correct length for strings containing multibyte characters. Therefore the use of wc -m
.
References:
참고URL : https://stackoverflow.com/questions/16750911/count-line-lengths-in-file-using-command-line-tools
반응형
'IT TIP' 카테고리의 다른 글
무결성 제약 위반 : 1452 하위 행을 추가하거나 업데이트 할 수 없습니다. (0) | 2020.12.03 |
---|---|
'요소'초기화는 '케이스'레이블에서 건너 뜁니다. (0) | 2020.12.03 |
배열에 다음이 포함 된 경우 각도 표현식 (0) | 2020.12.03 |
HttpClient를 사용하여 데이터를 게시하는 방법은 무엇입니까? (0) | 2020.12.03 |
VectorDrawables srcCompat를 사용하는 Android Selector Drawable (0) | 2020.12.03 |