LINUX.ORG.RU

обработать строку


0

0

Есть строка в переменной (Continuing in background, pid 21445.)вот как с помощю SHELL выделить только цифры. как вы понимаете PID может быть и одно, двух, трёх, и тд. значным числом, (без точки функция kill с точкой не понимает)

★★

Можно сделать так
$your_var=`echo $your_var | tr -d "[A-Z]*[a-z]*"`

anonymous
()

ИМХО эту задачу надо решать слегка на более высоком уровне: есть не строка, а поток ввода который через пайп получает вывод другой команды.

Коли так, то не нужно пихать этот поток в переменную и потом с ней мучиться, а просто сказать
PID=`...здесь то что возвращает твою строку...|awk '{print $5}'`
И потом смело можно писать
kill -9 $PID

Flogger_d
()

$ abc="asdfklsajdflkkljfsa 78956"
$ echo ${abc//[^0-9]/}
78956

но

$ abc=asdjkl789akldk889xyz
$ echo ${abc//[^0-9]/}
789889
$ echo $abc | sed -e 's/[^0-9]//g'
789889
$ echo $abc | sed -e 's/^.*[^0-9]\([0-9]\+\).*$/\1/'
889

Но после ps лучше awk-ом или cut-ом

io ★★
()

При использовании awk лучше не ссылаться на номер позиции,
вдруг поменяется. Лучше прямо на конец:
$ echo "connection with pid 5674" | awk '{print $NF}'
5674

io ★★
()

Достать последнее число из переменной str.

str=${str%[^0-9]*}
str=${str##*[^0-9]}

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.