텍스트 파일에서 가장 긴 줄의 길이를 구하는 방법을 알고 있습니다.awk
awk ' { if ( length > L ) { L=length} }END{ print L}' file.txt
하지만 디렉토리에 있는 모든 파일 중 가장 긴 줄의 길이를 구하는 방법은 무엇입니까?
답변1
가장 간단한 해결책은 모든 파일을 연결하고 결과를 스크립트로 파이프하는 것입니다.
cat ./* | awk '{ if ( length > L ) { L=length} }END{ print L}'
여러 파일을 awk에 직접 전달할 수도 있습니다.
awk '{ if ( length > L ) { L=length} }END{ print L}' ./*
물론 파일이 실제로 디렉터리인 경우 일부 경고가 나타날 수 있지만 해롭지는 않습니다. 바이너리는 개념이 없기 때문에 더 큰 문제가 있을 수 있습니다.철사. 좀 더 구체적으로 말하자면 다음과 같이 할 수 있습니다.
awk '{ if ( length > L ) { L=length} }END{ print L}' ./*.txt
.txt
현재 디렉터리의 파일 만 일치합니다 .
그리고 @G-Man이 자신의 의견에서 말했듯 *
이 숨겨진 파일(점으로 시작)은 일치하지 않습니다. 이를 원하시면 를 사용하세요 * .*
.
답변2
GNU 사용 wc
:
cat *.txt|wc -L
-L
가장 긴 줄의 길이를 출력하세요.
답변3
각 파일의 최대 길이를 원하면 GNU awk를 사용하십시오.
find . -type f -exec awk -v l=0 '
length>l {l=length} ENDFILE{print FILENAME ":", l; l=0}' {} +
또는 모든 파일의 최대 길이:
find . -type f -size +1c -exec cat {} + |
awk -v l=0 'length>l {l=length}; END{print l}'
파일이 개행 문자로 끝난다고 가정합니다. 파일이 줄 바꿈으로 끝나지 않으면 구분되지 않은 마지막 줄이 다음 파일의 첫 번째 줄과 병합되어 결과가 무효화될 수 있습니다.
-size +1c
빈 또는 한 문자 텍스트 파일에는 각각 0줄과 1개의 빈 줄이 있으므로 가장 긴 줄이 없기 때문에 최적화입니다.
답변4
또한 여러 파일을 처리할 수 있는 GNU wc(coreutils 8.4)를 사용하세요.
wc -L *.txt
- 각 개별 파일의 길이를 나열하십시오.
- 모든 파일의 최대 길이를 제공합니다.