Ответ 1
Просто простая команда sed выполнит задание:
sed 's/[^0-9]//g' file.txt
OUTPUT
3
34
3
Я попытался найти решение здесь, но не смог; заданные строки типа
ABC3
DFGSS34
CVBB3
как извлечь целые числа, чтобы получить
3
34
3
??
Просто простая команда sed выполнит задание:
sed 's/[^0-9]//g' file.txt
3
34
3
Для решения bash -only вы можете использовать подстановку параметров:
pax$ xyz=ABC3 ; echo ${xyz//[A-Z]/}
3
pax$ xyz=DFGSS34 ; echo ${xyz//[A-Z]/}
34
pax$ xyz=CVBB3 ; echo ${xyz//[A-Z]/}
3
Он очень похож на решения sed
, но имеет то преимущество, что ему не нужно разветвлять другой процесс. Это, вероятно, не важно для небольших рабочих мест, но у меня были ситуации, когда такого рода вещи выполнялись для многих, многих строк файла и не-forking - значительное ускорение скорости.
Как насчет использования tr
?
for s in ABC3 DFGSS34 CVBB3 ; do
tr -cd 0-9 <<<"$s"
echo
done
Как насчет версии grep
?
grep -o '[0-9]*' file.txt