- 论坛徽章:
- 0
|
本帖最后由 ljwd1000 于 2013-03-19 18:32 编辑
需求:需要将文本指定段落的匹配行做相应的替换,请大家帮忙优化一下代码及处理的思路,谢谢了
原文本- [root@ tmp]# cat 1
- 4 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "10.190.141.141:8004",
- 'mysql_name' => "ytser",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_3",
- 'java_ip'=>'10.190.242.137:9007',
- 'java_ip2'=>'10.190.242.137:8001',
- ),
- 5 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "10.190.141.141:8004",
- 'mysql_name' => "ytser",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_5",
- 'java_ip'=>'10.190.242.86:9007',
- 'java_ip2'=>'10.190.242.86:8001',
- ),
- 6 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "10.190.141.141:8004",
- 'mysql_name' => "ytser",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_5",
- 'java_ip'=>'10.190.242.86:9007',
- 'java_ip2'=>'10.190.242.86:8001',
- ),
- ),
复制代码 我自己写的awk代码:- [root@ tmp]# cat x.awk
- /5 =>/{print;
- while(getline k){
- if(k~/mysql_host/){
- print gensub(/([^"]*")([^"]*)(.*)/,"\\18.8.8.8\\3","g",k)
- }
- else{
- if(k~/mysql_name/){
- print gensub(/([^"]*")([^"]*)(.*)/,"\\1test\\3","g",k)
- next;
- }
- else{
- print k
- }
- }
- }
- }1
复制代码 结果:- [root@ tmp]# awk -f x.awk 1
- 4 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "10.190.141.141:8004",
- 'mysql_name' => "ytser",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_3",
- 'java_ip'=>'10.190.242.137:9007',
- 'java_ip2'=>'10.190.242.137:8001',
- ),
- 5 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "8.8.8.8",
- 'mysql_name' => "test",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_5",
- 'java_ip'=>'10.190.242.86:9007',
- 'java_ip2'=>'10.190.242.86:8001',
- ),
- 6 => array(
- 'table_name_inc' => "m_",
- 'mysql_host' => "10.190.141.141:8004",
- 'mysql_name' => "ytser",
- 'mysql_pass' => "yOck_123ok",
- 'mysql_db' => "game2_5",
- 'java_ip'=>'10.190.242.86:9007',
- 'java_ip2'=>'10.190.242.86:8001',
- ),
- ),
复制代码 |
|