У меня есть строка, которая читается из файла, и она содержит все типы символов, отличных от ascii, например:
line=^AÀÀ^P^G^P^@^H15552655^@^@E$4c<84>%ÿ~^@^@^Ac<8f>/qu^Q»í&.WÈå
Теперь мне просто нужно извлечь из этого числа '15552655'.
Что я пробовал:
line=$(sed -n '1p' < file)
number=$(echo "${line//[!0-9]/}")
or
number=$(echo $line | sed 's/[^0-9]*//g')
Но это возвращает '155526554', поэтому мне нужен способ извлечь подстроку из строки, которая непрерывно содержит как минимум 4 последовательных числа [Гарантировано, что будет по крайней мере 4числа в этом шаблоне]
Любая помощь будет принята с благодарностью.
Update-1:
number=$(echo $line | sed 's/[^0-9]*\([0-9]\{1,\}\).*$/\1/')
Кажется, что это работает для вышеупомянутого случая, но это не удастся, есливход имеет такой формат
line=^AÀÀ^P^4G^P^@^H15552655^@^@E$4c<84>%ÿ~^@^@^Ac<8f>/qu^Q»í&.WÈå
В этом случае он возвращает 4, т.е. он возвращает первый цикл чисел.Мне нужно добавить что-то, что говорит, дайте мне самое длинное или более 4 цифр.