2013-03-01 9 views
0

Я пишу CSH сценарий и нужно присвоить числовое значение в виде строки в переменнойКак получить числовое значение из строки в CSH

Вот пример значения строки: «pkt_size = 78»

Символы в строке всегда будут одинаковыми, за исключением числа.

Мне очень нужно извлечь значение после знака «=».

Какую команду Unix я могу использовать для этого?

Спасибо,

ответ

3
% set var = pkt_size=78 
% set num = `echo $var | sed 's/.*=//'` 
% echo $num 
78 

Или, если вы используете Tcsh (не обычная CSH) и префикс является фиксированной строкой:

% set var = pkt_size=78 
% set num = $var:s/pkt_size=// 
% echo $num 
78 

Obligatory reference.

0

Быстрый хак ...

$ NUMBER=`echo pkt_size=78 | sed -e 's/pkt_size=\(\d*\)/\1/'` 
0

Согласно C-shell Cookbook

C-оболочка не имеет строки манипулирования инструментами. Вместо этого мы в основном используем команду echo и утилиту awk. У последнего есть свой язык для обработки текста, и вы можете писать awk-скрипты для выполнения сложной обработки, как правило, из файлов. Есть даже книги, посвященные awk, такие как лаконично названный sed & awk от Dale Dougherty (O'Reilly & Associates, 1990). Естественно, подробное описание далеко выходит за рамки этой кулинарной книги.

awk хак будет выглядеть так:

set var=`echo "$var" | awk -F= '{print $2}'` 
0

Если вы должны использовать CSH, вы можете использовать встроенные модификаторы.

% set v=pkt_size=78 
% echo $v:s/pkt_size=// 
78 

Это может быть характерно для tcsh.

Но есть действительно много причин использовать вместо этого производную оболочки bourne (sh, ksh, bash).

Смежные вопросы