Получить длину самой длинной строки в файле - PullRequest
179 голосов
/ 31 октября 2009

Я ищу простой способ найти длину самой длинной строки в файле. В идеале это будет простая команда оболочки bash вместо скрипта.

Ответы [ 13 ]

2 голосов
/ 21 апреля 2017

Я работаю в среде Unix и работаю с сжатыми файлами размером несколько ГБ. Я протестировал следующие команды, используя сжатый файл размером 2 ГБ с длиной записи 2052.

  1. zcat <gzipped file> | wc -L

и

  1. zcat <gzipped file> | awk '{print length}' | sort -u

Время было в среднем

  1. 117 секунд

  2. 109 секунд

Вот мой сценарий после примерно 10 запусков.

START=$(date +%s) ## time of start

zcat $1 |  wc -L

END=$(date +%s) ## time of end
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"

START=$(date +%s) ## time of start

zcat $1 |  awk '{print length}' | sort -u

END=$(date +%s) ## time of end
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"
2 голосов
/ 11 февраля 2010

Просто для удовольствия, вот версия Powershell:

cat filename.txt | sort length | select -last 1

И просто получить длину:

(cat filename.txt | sort length | select -last 1).Length
1 голос
/ 02 ноября 2009

Вариация на тему.

Эта строка покажет все строки, имеющие длину самой длинной строки, найденной в файле, с сохранением порядка их появления в источнике.

FILE=myfile grep `tr -c "\n" "." < $FILE | sort | tail -1` $FILE

Итак, мой файл

x
mn
xyz
123
abc

даст

xyz
123
abc
...