根据当前行信息,在其上一行和下一行加入特定语句


PowerShell交流中心分类: 变量-函数-脚本-条件-循环-参数根据当前行信息,在其上一行和下一行加入特定语句
hugogo 管理员 asked 4月 ago

你好,我想根据当前行信息,在其上一行和下一行加入特定语句。
组合成带日志输出的oracle sqlplus下执行的语句。谢谢!

—————————————————————-
$c|Select-String “aaaxxxb”
E:\myfile\work\20161220\01_aaaxxxb_dbm.sql
E:\myfile\work\20161220\02_aaaxxxb_code.sql

$c|Select-String “new”
E:\myfile\work\20161220\04_new_other.sql
E:\myfile\work\20161220\05_new_grants.sql

—————————————————————

想转换成的语句如下

spool E:\myfile\work\20161220\01_aaaxxxb_dbm.log
@E:\myfile\work\20161220\01_aaaxxxb_dbm.sql
spool off;
spool E:\myfile\work\20161220\01_aaaxxxb_code.log
@E:\myfile\work\20161220\02_aaaxxxb_code.sql
spool off;

spool E:\myfile\work\20161220\04_new_other.log
@E:\myfile\work\20161220\04_new_other.sql
spool off;
spool E:\myfile\work\20161220\05_new_grants.log
@E:\myfile\work\20161220\05_new_grants.sql
spool off;

1 Answers
Best Answer
Mooser Lee 管理员 answered 4月 ago
$src=@(
'$c|Select-String “aaaxxxb”',
'E:\myfile\work\20161220\01_aaaxxxb_dbm.sql'
'E:\myfile\work\20161220\02_aaaxxxb_code.sql'
)

$src | foreach {

 if($_ -like '*.sql'){
 "spool {0}.log" -f $_
 "@$_"
 "spool off;"
 "`n"
 }
 else{
 $_
 }
}