Привет я нашел в Интернете egrep строку. Строка основывает самую длинную строку в тексте. Но я не понимаю определенные элементы. Возможно, кто-то мог объяснить меня вся строка?
Вот: egrep -n "^.{$(wc -L < filename)}$" filename
Полная команда: egrep -n "^.{$(wc -L < filename)}$" filename
Разбивка:
egrep
= Программа egrep
, которая ищет строки, которые сопоставьте образец и напечатайте их. (аналогично grep
). Эквивалентен grep -E
, который интерпретирует вещь в кавычках как расширенный шаблон регулярного выражения.
-n
= аргумент egrep для указания номера строки.
$(wc -L < filename)
- wc
- это программа для подсчета слов, которая печатает количество новых строк и содержимого в файле. -L
является аргументом максимальной длины строки wc
. < filename
- это команда для передачи полного содержимого указанного файла filename
в wc
. $( )
представляет собой Bashism (то, что связано с программой и языком сценариев bash
) и является способом сказать: «Обработайте команду здесь, а затем поместите вывод вместо всей этой строки. Остальная часть этой команды кажется частью регулярных выражений, плюс входные данные, передаваемые в строку, в конечном итоге это просто шаблон, которому соответствует egrep
.
"^.{
... }$"
= "
это просто способ передать этот шаблон в egrep
без символов в нем, интерпретируемых как коды Bash. Остальная часть - это шаблон регулярного выражения . Регулярное выражение - это то, что должен знать каждый. Я использую RegExr , чтобы помочь мне выучить и понять регулярное выражение и построить шаблоны регулярных выражений. Чтобы разбить это, ^
является якорем и указывает, что оно соответствует началу строка. .
указывает любой символ, кроме разрыва строки перед следующим аргументом. {
и }
указывают фактические символы {
и }
в выходных данных, в соответствии с RegExr. $
в конце является якорем для обозначения конца строки.