Perl ワンライナー:
perl -00 -ne '$n=tr/\n/\n/; if ($n>$m) {$m=$n; $max=$_}; END {print $max}' file
bashを使用するだけです:
max=0
while read bullet thingy; do
case $bullet in
"*") item=$thingy; count=0 ;;
"**") ((count++)) ;;
"") (( count > max )) && { max_item=$item; max=$count; } ;;
esac
done < <(cat file; echo)
echo $max_item $max
<(cat file; echo)
部分は、ファイルの最後の行の後に空白行があることを確認することです。これにより、最後のサブリスト グループを最大値と比較できます。
それはカウントを保持するだけです。最大のサブリストに項目を保存するには:
max=0
while read bullet thingy; do
case $bullet in
"*") item=$thingy; unset sublist; sublist=() ;;
"**") sublist+=($thingy) ;;
"") if (( ${#sublist[@]} > max )); then
max=${#sublist[@]}
max_item=$item
max_sublist=("${sublist[@]}")
fi
;;
esac
done < <(cat file; echo)
printf "%s\n" "$max_item" "${#max_sublist[@]}" "${max_sublist[@]}"
sudo_O の例を使用する場合、これは出力します
letters
6
a
b
b
d
e
f