Intereting Posts
SoftIRQ и обработка быстрых пакетов в сети Linux Nginx перенаправляет на главный домен на SSL В чем разница между setInterval (func) и setInterval (function () {func ()}) Как создать статический двоичный файл для установки GNU / Linux со старым kernelм? как сделать командный файл до тех пор, пока другой пакетный файл не завершит выполнение? Расширение Memcached для PHP на Windows Server Как предотвратить закрытие моего диалогового windows MFC после нажатия клавиши ESC, но разрешить другим элементам управления обрабатывать его? Как написать и выполнить программу hello world в файле для R? Как получить команду pid из командной строки sudo Преобразование уценки курсивом и жирным шрифтом в латекс Проверка имени файла в Windows Ubuntu Linux Udev rules: Можно ли запускать программу, написанную на C через udev? Apple iOS IDE для Linux? Запрещено У вас нет прав доступа на этом сервере. Centos 6 / Laravel 4 Удаленный SSH / SFTP с Netbeans

Как удалить все нечисловые символы из строки в BASH?

Пример:

file="123 hello" 

Как я могу отредактировать строковый файл таким образом, чтобы он содержал только цифры и текстовая часть была удалена?

Так,

 echo $file 

должен печатать только 123 .

Это один из способов с sed :

 $ echo $file | sed 's/[^0-9]*//g' 123 $ echo "123 he23llo" | sed 's/[^0-9]*//g' 12323 

Или с чистым bash :

 $ echo "${file//[!0-9]/}" 123 $ file="123 hello 12345 aaa" $ echo "${file//[!0-9]/}" 12312345 

Чтобы сохранить результат в самой переменной, выполните

 $ file=$(echo $file | sed 's/[^0-9]*//g') $ echo $file 123 $ file=${file//[!0-9]/} $ echo $file 123 

Ты можешь сказать:

 echo ${file%%[^0-9]*} 

Однако в некоторых случаях это сталкивается с проблемами:

 $ file="123 file 456" $ echo ${file%%[^0-9]*} 123 

Используя tr :

 $ file="123 hello 456" $ new=$(tr -dc '0-9' < << $file) $ echo $new 123456