将单行复制到多行

时间:2012-12-19 14:16:19

标签: notepad++ string-matching

该文本文件包含以下内容:

copy bundles\track_australia\part_054\snds.bundle
 bundles\track_italy\part_052\snds.bundle
 bundles\track_singapore\part_052\snds.bundle
copy bundles\track_abudhabi\part_054\snds.bundles.bundle
 bundles\track_belgium\part_025\snds.bundle
 bundles\track_britain\part_057\snds.bundle
 bundles\track_japan\part_053\snds.bundle
 bundles\track_usa\part_053\snds.bundle

我需要将第一行(以“copy”开头的行)与其余行合并。 生成的结果应如下所示:

copy bundles\track_abudhabi\part_054\snds.bundle
copy bundles\track_abudhabi\part_054\snds.bundle bundles\track_belgium\part_025\snds.bundle
copy bundles\track_abudhabi\part_054\snds.bundle bundles\track_britain\part_057\snds.bundle
copy bundles\track_abudhabi\part_054\snds.bundle bundles\track_japan\part_053\snds.bundle
copy bundles\track_abudhabi\part_054\snds.bundle bundles\track_usa\part_053\snds.bundle
copy bundles\track_abudhabi\part_055\snds.bundle
copy bundles\track_abudhabi\part_055\snds.bundle bundles\track_belgium\part_026\snds.bundle
copy bundles\track_abudhabi\part_055\snds.bundle bundles\track_britain\part_058\snds.bundle
copy bundles\track_abudhabi\part_055\snds.bundle bundles\track_japan\part_054\snds.bundle
copy bundles\track_abudhabi\part_055\snds.bundle bundles\track_usa\part_054\snds.bundle

我有成千上万的这样的行。请帮帮我。

2 个答案:

答案 0 :(得分:0)

基本上您要删除任何换行符,除非后面跟着“复制”。

这样的事情应该适用于您的搜索模式:

\R(?!copy)

(您需要在搜索和替换对话框中启用正则表达式和多行。)

(?!...)是一个负面的预测。这意味着“新行没有跟着复制一词”。

然后用空格替换它(因为你想要在一行的最后一个单词和下一行的第一个单词之间有空格。)

答案 1 :(得分:0)

使用notepad ++宏,如下所示:

  1. 将光标置于文件末尾
  2. Marco 菜单中按开始录制
  3. 打开搜索对话框并输入"\r\ncopy "(确保搜索模式为扩展 Direction Up )并点击查找下一个
  4. 复制整行(可能使用主页 - > Shift +结束然后复制)
  5. 打开替换对话框( Ctrl + H )并将"\r\n bundles"替换为"\r\n" +复制的行+ " bundles",取消选中环绕< / em>,将 Direction 设置为 Down 并点击全部替换
  6. 点击主页以获取该行的开头
  7. Marco 菜单
  8. 停止录制
  9. 根据需要从菜单
  10. 重复运行宏