# cat ./test.txt | awk '{print length($0), $0}' | sort -nr | cut -d' ' -f2- script lessバージョン # cat ./test.txt | tr '\n' '\0' | xargs -0 -L1 expr length | \ nl -ba -nln | join - <(nl -ba -nln ./test.txt) | sort -k2nr | cut -d' ' -f3- 各行の文字数を、 xargs + expr length で調べているところがポイント。 あと、こういう場面でしか使える気がしない join コマンドも素敵。 我田引水、自画自賛。