파일에 몇 개의 문자가 포함되어 있는지 확인하고 특정 목록의 문자를 뺀 수는 어떻게 계산합니까? 여기에 예제 파일입니다특정 문자 목록을 제외하고 파일의 각 줄에있는 문자 수를 계산하는 방법은 무엇입니까?
你好吗?
我很好,你呢?
我也很好。
나는 카운트에서 ?
, ,
및 。
의 발생을 제외 할.
3
5
4
파일에 몇 개의 문자가 포함되어 있는지 확인하고 특정 목록의 문자를 뺀 수는 어떻게 계산합니까? 여기에 예제 파일입니다특정 문자 목록을 제외하고 파일의 각 줄에있는 문자 수를 계산하는 방법은 무엇입니까?
你好吗?
我很好,你呢?
我也很好。
나는 카운트에서 ?
, ,
및 。
의 발생을 제외 할.
3
5
4
가 sed
부분은 원하지 않는 문자를 제거
sed 's/[,。?]//g' file | perl -C -nle 'print length'
시도하고 perl
부분은 나머지 문자를 계산 : 출력은 다음과 같을 것입니다.
한 가지 방법은 스트림에서 해당 문자를 제거한 다음 wc -m
을 사용하는 것입니다.
perl -pe 's/(\?|,|,|。)//g' file.txt | \
while read -r line; do
printf "$line" | wc -m ;
done
'perl -lne 's/[?,,.//// g; print length' –
간단한 해결책은 this one에 접근하지만 awk
사용 :
sed 's/[?,。]//g' file | awk '{ print length($0) }'
awk는 그 대체를 할 수 있습니다 -'sed'는 필요 없습니다. 'awk '{gsub ("[?,.]", ""); 인쇄 길이()} '' –
이상의 단순 :
tr -d [?,,。] <file | wc -m
여기 문자를 제거 펄을 사용하는 예는 순수 배쉬 용액 :
while IFS= read -r l; do
l=${l//[?,。]/}
echo "${#l}"
done < file
우리 둘 다'perl'을 사용했지만, 파이프 라인의 반대편에는 – jordanm
옙이 있습니다. 유일한 문제는 perl이 유니 코드를 처리하는 방법을 잘 모르겠습니다. Perl 전문가가 아닙니다. –
그것 [더 좋을] (http://stackoverflow.com/a/6163129/1032785) – jordanm