魏长东

weichangdong

东邪

shell的正则

shell不常用有些基本的语法老是记不住,比如shell的if正则判断。shell的语法,感觉好不友好。空格啥的不能乱加,也不能少。

[root@swordman test]# cat sort
1-2
3-3
6-4
8-5
6-1
1-7
1-2
21-2

要求是打印出1-开头的数据。

#!/bin/bash
for wcd in `cat sort`
do
	if [[ $wcd =~ "^1-.*" ]]
	then
		echo $wcd
	fi
done

执行效果:

[root@swordman test]# bash read.sh
1-2
1-7
1-2

另外shell的正则,也有子模式匹配。

wcd='2014/04/07';
if [[ $wcd =~ "(.*)\/(.*)\/(.*)" ]]
then
        echo ${BASH_REMATCH};
        echo ${BASH_REMATCH[1]};
        echo ${BASH_REMATCH[2]};
        echo ${BASH_REMATCH[3]};
fi

执行结果

[root@swordman test]# bash  shell_reg.sh
2014/04/07
2014
04
07