Exemple:
file="123 hello"
Comment puis-je modifier le fichier de chaîne de telle sorte qu'il ne contienne que les nombres et que la partie texte soit supprimée?
Alors,
echo $file
devrait imprimer 123
seulement.
C'est un moyen avec sed
:
$ echo $file | sed 's/[^0-9]*//g'
123
$ echo "123 he23llo" | sed 's/[^0-9]*//g'
12323
Ou avec pure bash
:
$ echo "${file//[!0-9]/}"
123
$ file="123 hello 12345 aaa"
$ echo "${file//[!0-9]/}"
12312345
Pour enregistrer le résultat dans la variable elle-même, faites
$ file=$(echo $file | sed 's/[^0-9]*//g')
$ echo $file
123
$ file=${file//[!0-9]/}
$ echo $file
123
Tu peux dire:
echo ${file%%[^0-9]*}
Cependant, cela pose des problèmes dans certains cas:
$ file="123 file 456"
$ echo ${file%%[^0-9]*}
123
Utiliser tr
:
$ file="123 hello 456"
$ new=$(tr -dc '0-9' <<< $file)
$ echo $new
123456