Это потому, что grep -o '[0-9]'
возвращает все цифры в отдельных строках.
больно было бы cat test.txt | grep -o [0-9] | head -1 > num1.txt
Но не делайте этого: вы делаете way слишком много файлового ввода-вывода. Используйте регулярное выражение в bash:
if [[ $1 =~ ^([A-Z])([0-9])([0-9])$ ]]; then
printf "%s00%d00%d\n" "${BASH_REMATCH[@]:1}"
fi
Убедитесь, что вы используете #!/bin/bash
в качестве линии Шебанга.
$ set -- R19
$ if [[ $1 =~ ^([A-Z])([0-9])([0-9])$ ]]; then
> printf "%s00%d00%d\n" "${BASH_REMATCH[@]:1}"
> fi
R001009