11.10 действительно старый. Дайте 12.04 попробовать хотя бы (если вы хотите LTS ... что вы, вероятно, делаете.) Он должен видеть все ядра. Если это не так, сообщите об этом как об ошибке.
Как сообщить об ошибке?
Это покажет вам 4 числа в строке, но не более
grep '[0-9][0-9][0-9][0-9][^0-9]' file
Обратите внимание: ^ означает не
. Проблема связана с этим, хотя я не уверен, как чтобы исправить ... если число - это конец строки, тогда оно не появится.
Однако эта уродливая версия будет работать для этого случая
grep '[0-9][0-9][0-9][0-9]' file | grep -v [0-9][0-9][0-9][0-9][0-9]
Если grep не поддерживает регулярные выражения perl (-P), используйте следующую команду оболочки:
grep -w "$(printf '[0-9]%.0s' {1..4})" file
, где printf '[0-9]%.0s' {1..4} будет производить 4 раза [0-9]. Этот метод полезен, когда у вас есть длинные цифры, и вы не хотите повторять шаблон (просто замените 4 на число ваших цифр, которое нужно искать).
Используя -w будет искать все слова. Однако, если вас интересуют буквенно-цифровые строки, например 1234a, затем добавьте [^0-9] в конце шаблона, например.
grep "$(printf '[0-9]%.0s' {1..4})[^0-9]" file
Использование $() в основном является подстановкой команд. Проверьте это сообщение, чтобы увидеть, как printf повторяет шаблон.