Попробуйте использовать 1, 2, 3, 4, ... для аргументов командной строки (вместо того, чтобы использовать чтение)
Вызовите ваш скрипт, используя:
./script.sh 121212 "Jan 14" 00 12
Я бы использовал только класс
:
grep -o '[^[:digit:]][[:digit:]] [[:digit:]][^[:digit:]]'
Это предполагает, что A1 23B
не должно быть сопоставлено, потому что это 3 подряд (не считая пространство) цифры.
Неважно; Это всего лишь человек ./file_name
.
Если что-то содержит пробел, это обычно не считается «словом».
> echo "foo fu1 2bar baz" | grep -oE '[[:alpha:]]+[0-9] [0-9][[:alpha:]]+'
fu1 2bar