在GoldenGate复制程序中拉出表映射

时间:2015-06-12 15:13:21

标签: regex powershell

我有以下要求。我需要列出Golden Gate prm文件中的所有表格。我想使用正则表达式从字符串块中提取列表。数据格式如下所示:

MAP  AFF_INTEGRATION.SFDC_ACCOUNT , Target dbo.AFF_INTEGRATION_SFDC_ACCOUNT_EXCEPTION ,

--MAP AFF_INTEGRATION.SFDC_USER , Target er_service.dbo.AFF_INTEGRATION_SFDC_USER ,

我希望数据采用表格格式:

AFF_INTEGRATION.SFDC_ACCOUNT        dbo.AFF_INTEGRATION_SFDC_ACCOUNT_EXCEPTION   

注意:应忽略包含--的行。

修改:更新了问题中的文字输入文字。所以基本上我必须在MAP之后分割内容并在,结束,对Target也是如此。

1 个答案:

答案 0 :(得分:0)

只需读取输入文件,忽略以--开头的行,拆分并重新连接其余行,然后将结果写回文件:

Get-Content 'C:\path\to\input.txt' |
  ? { $_ -notmatch '^(\s*$|--)' } |
  % { $_ -split '\s*,\s*' -join "`t" } |
  Set-Content 'C:\path\to\output.txt'

条件$_ -notmatch '^\s*$'仅用于跳过空白行。如果您的输入文件中没有空行,则可以将其删除。

编辑:第二个想法你也可以替换分隔符,而不是分割和重新连接这些行:

Get-Content 'C:\path\to\input.txt' |
  ? { $_ -notmatch '^(\s*$|--)' } |
  % { $_ -replace '\s*,\s*', "`t" } |
  Set-Content 'C:\path\to\output.txt'