[bash] 파일에서 가장 긴 줄

파일에서 가장 긴 줄의 길이를 찾는 간단한 방법을 찾고 있습니다. 이상적으로는 스크립트 대신 간단한 bash 쉘 명령입니다.



답변

wc (GNU coreutils) 사용 7.4 :

wc -L filename

제공합니다 :

101 filename


답변

awk '{print length, $0}' Input_file |sort -nr|head -1

참조 : 파일에서 가장 긴 줄 찾기


답변

awk '{ if (length($0) > max) {max = length($0); maxline = $0} } END { print maxline }'  YOURFILE 


답변

고양이를 쓸모없고 외부 명령을 사용하지 않고 재미 있고 교육적인 목적으로 순수한 POSIX 셸 솔루션 . 파일 이름을 첫 번째 인수로 사용합니다.

#!/bin/sh

MAX=0 IFS=
while read -r line; do
  if [ ${#line} -gt $MAX ]; then MAX=${#line}; fi
done < "$1"
printf "$MAX\n"


답변

wc -L < filename

준다

101


답변

perl -ne 'print length()."  line $.  $_"' myfile | sort -nr | head -n 1

가장 긴 줄의 길이, 줄 번호 및 내용을 인쇄합니다

perl -ne 'print length()."  line $.  $_"' myfile | sort -n

줄 번호와 길이를 가진 모든 줄의 정렬 된 목록을 인쇄합니다

.연결 연산자이다 – 길이는 () 이후 여기에 사용하면
$., 현재의 행 번호는
$_현재 라인


답변

위의 예에서 중요한 간과 점.

다음 2 개의 예제는 확장 탭을 계산합니다.

  wc -L  <"${SourceFile}"
# or
  expand --tabs=8 "${SourceFile}" | awk '{ if (length($0) > max) {max = length($0)} } END { print max }'

다음 두 개의 확장되지 않은 탭이 계산됩니다.

  expand --tabs=1 "${SourceFile}" | wc -L
# or
  awk '{ if (length($0) > max) {max = length($0)} } END { print max }' "${SourceFile}"

그래서

              Expanded    nonexpanded
$'nn\tnn'       10            5