아래와 같이 여러 줄 문자열이 있습니다.
"this is a sample
this is a second sample
same length the 1 above
this is a third sample"
어떤 줄의 최대 길이(문자 수)와 길이가 얼마인지 알아낼 수 있는 방법이 있습니까? 위의 예에서는 두 번째와 세 번째 행이 됩니다.
답변1
string="this is a sample
this is a second sample
same length the 1 above
this is a third sample"
printf '%s\n' "$string" | awk -v max=-1 '
{l = length}
l > max {max = l; output = "Max length: " max RS}
l == max {output = output NR ": " $0 RS}
END {if (max >= 0) printf "%s", output}'
산출:
Max length: 23
2: this is a second sample
3: same length the 1 above
답변2
echo "this is a sample
this is a second sample
this is a third sample" | \
while read line; do
echo ${#line} $line
done | sort -n
길이별로 정렬된 길이의 행 목록을 제공합니다.
답변3
총 통계맨 위GNU를 사용하는 가장 긴 줄앗해결책:
awk 'BEGIN{ PROCINFO["sorted_in"]="@ind_num_desc" }
{ len=length; a[len]=(a[len])? a[len]", "NR:NR }
END{ for(i in a) printf "Length: %s, row number(s): %s\n",i,a[i] }' file
산출:
Length: 23, row number(s): 2, 3
Length: 22, row number(s): 4
Length: 16, row number(s): 1