grep
ориентирован на линию; он выведет соответствующие строки для вывода. Возможно, в вашем файле есть огромная строка, и результирующая строка не может быть преобразована в строковое значение с помощью оболочки, так как $(
... )
требует.
Прежде всего, попробуйте просто cat filename | grep '\<[0-9]*\>' > results
и посмотрите, что находится в файле results
. Может быть, этого достаточно.
Но если у вас есть несколько чисел в строке, и вы хотите извлечь их все, используйте -o
: grep -o '\<[0-9]*\>'
. Это будет печатать только совпадающие части, каждое совпадение на новой строке, даже если оригинальные совпадения находятся на той же строке. Если вам нужны также номера строк, добавьте -n
.