Мне интересно узнать номер строки самой длинной строки из файла.
Например, если у меня есть файл со следующим содержанием:
lalala
tatatata
abracadabra
mu mu mu
как я могу написать Баш скрипт , который даст мне выход что - то вроде этого: 3 -> abracadabra
?
command-line
bash
scripts
user214965
источник
источник
^
) и ее концом ($
) имеет ровно n символов (.{n}
). Затем ему просто нужно найти n: для этого он использует GNU-изм, «wc -L filename» (обратите внимание, что это не posix), который возвращает длину самой длинной строки имени файла. Таким образом, он получает любую строку, имеющую самую длинную длину.$(cmd)
заменяется на выводcmd
.-C 3
к опциям grep, чтобы получить несколько строк до и после для контекстаВы можете использовать
awk
для вывода длины каждой строки (length()
) и номера строки (NR
), а затем перевернуть (-r
)sort
результат на число (-n
):Чтобы показать только первую строку:
источник
wc -L
, я не знал об этом аргументе. Это действительно очень полезно.AO (N) может быть достигнуто с помощью perl one liner:
использования (где machin - имя файла)
или
или (менее ясно, но короче)
источник
O (n) Для машин, например OpenWRT, где perl недоступен, @ awk @ version может быть полезен.
или питон:
источник
Ответ Radu вполне достаточен и предпочтителен, хотя, если вы хотите более явное и основанное на оболочке решение, вы можете использовать следующий скрипт:
Применение:
./find_longest.sh input.txt
Пример:
источник