замена переменной в скрипте оболочки с помощью perl - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть переменная в сценарии оболочки,

var=1234_number

Я хочу заменить все, кроме целого числа $ var .. Как я могу это сделать с помощью perl onliner?

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Возможно, вы ищете что-то для редактирования скрипта оболочки, в этом случае этого может быть достаточно:

perl -i.bak -e 's/\b(var=\d+).*/$1/' shellscript.sh

-i перезаписывает исходный файл, сохраняя копию в файле shellscript.sh.bak; команда подстановки находит присваивания переменной 'var' (а не более длинному имени, оканчивающемуся на 'var'), за которыми следуют знак равенства, некоторые цифры и любые нецифровые символы, и оставляет после себя только присвоение цифр.

В примере это дает:

var=1234

Обратите внимание, что регулярное выражение в Perl не является надежным - оно исправит это (сбросив закрывающую скобку).

: ${var=1234_number}

Работа со всеми такими возможными вариантами чрезвычайно довольно сложно:

echo $var=$other

OTOH, возможно, вы пытаетесь исключить цифры из переменной внутри сценария оболочки, в этом случае:

var=$(echo $var | perl -e 's/\D//g')

Вы также можете использовать «sed» для работы:

var=$(echo $var | sed 's/[^0-9]//g')
0 голосов
/ 22 ноября 2010

Для этого не нужно ничего использовать, кроме оболочки

var=1234_abcd
var=${var%_*}
echo $var  # => 1234

См. «Расширение параметров» в руководстве по bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...