디렉토리의 모든 텍스트 파일에서 가장 긴 줄 찾기 방법을 알고 있습니다. awk awk ‘ { if

텍스트 파일에서 가장 긴 줄의 길이를 얻는 방법을 알고 있습니다. awk

awk ' { if ( length > L ) { L=length} }END{ print L}' file.txt

그러나 디렉토리에있는 모든 파일의 가장 긴 줄 길이를 어떻게 얻을 수 있습니까?



답변

가장 간단한 해결책은 모든 파일을 연결하고 결과를 스크립트로 파이프하는 것입니다.

cat ./* | awk '{ if ( length > L ) { L=length} }END{ print L}'

awk에 여러 파일을 직접 전달할 수도 있습니다.

awk '{ if ( length > L ) { L=length} }END{ print L}' ./*

물론 파일이 실제로 디렉토리 인 경우 경고가있을 수 있지만 무해해야합니다. 바이너리 파일에는 line 개념이 없기 때문에 이진 파일에 더 큰 문제가있을 수 있습니다 . 보다 구체적으로 설명하면 다음과 같은 작업을 수행 할 수 있습니다.

 awk '{ if ( length > L ) { L=length} }END{ print L}' ./*.txt

.txt현재 디렉토리 의 파일 만 일치시킵니다 .

그리고 @ G-Man이 자신의 의견에서 언급했듯이 *숨겨진 파일과 일치하지 않습니다 (점으로 시작). 원하는 경우을 사용하십시오 * .*.


답변

GNU로 wc:

cat *.txt|wc -L

-L 가장 긴 줄의 길이를 인쇄합니다.


답변

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 줄을 가지므로 가장 긴 줄을 가지지 않는 최적화입니다.


답변

또한 GNU wc (coreutils 8.4)를 사용하면 여러 파일을 처리 할 수 ​​있습니다

wc -L *.txt
  • 각 개별 파일의 길이를 나열합니다
  • 모든 파일의 가장 긴 길이를 제공 할뿐 아니라

답변