日期:2014-05-16  浏览次数:20642 次

关于shell编程的文本处理
有一行文本如下:
int n,i,s[10],a,j;

如何在shell程序中提取到10,然后保存到变量中?

------解决方案--------------------
a=$(echo "int n,i,s[10],a,j;"|awk -F'\\[|\\]' '{print $2}')

把结果赋值给变量a

------解决方案--------------------
#! /bin/sh

str=`echo "int n,i,s[101],a,j;" | grep -o "\[.*\]"`
str=`echo ${str:1:${#str}-2}`
echo $str
------解决方案--------------------
grep -oP '(?<=\s[)\d+'
------解决方案--------------------
$ b=$(echo "int n,i,s[10],a,j;"|sed 's/[^0-9]*\([0-9]*\).*/\1/');echo $b
10