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

几个正则的写法

没用过正则,最近在实现一个需求时需要使用到
rpm的打包文件 spec
内容:
%install

mkdir -p .%{_prefix}/algo

cp -r $OLDPWD/../*.sh .%{_prefix}/algo

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{name}-%{version}

%files
%defattr(0755,admin,admin)
%config(noreplace) %{_prefix}/algo/.user.ini

%changelog


clean可能没有,changelog也可能是没有配置的
需要获取
目前将文件所有内容读入为一个字符串
1.%install之后到下一个配置项之间的所有内容
2.%config之后到下一个配置项的所有内容【可能后面无配置项,也可能有。且如上可能出现在同一行,也可能有多行的情况】

遇到困难点在于,配置项可能是缺失的,也可能存在,配置内容中也存在%

这两个正则怎么处理,有木有什么更好的处理方式?求教


------解决方案--------------------
配置项可以用^%.*\>匹配
^行首
$行尾
\<词首
\>词尾

1. ^%install\>\(.*\)^%.*\>


------解决方案--------------------
Assembly code
sed '/^%install/,/^%/!d' urfile | sed '$d'