查找特定文本,在此文本上方的行中在设置的位置插入字符

时间:2019-11-14 14:41:32

标签: python ruby

我正在使用notepadd ++文件,我大约有70个文件,并且每个文件中,我需要在一行的2个位置中添加“ 20”,大约15次。

所以在每个++文件中,我都有:

  

* CSTART

     

未知-1.00    -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0    -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0

     

1811020926 1811110548 2

     

* CEND

这组行出现多次,每个文件中最多15条。我想找到每个 CEND 实例,并在其上方的行中,在每个日期之前插入数字20。

包含“ 1811020926 1811110548 2”的行是yy-mm-dd-hh-mm格式,由于我们使用的软件存在错误,我需要将其设置为yyyy-mm-dd-hh-mm格式。 / p>

所以我们从:1811020926 1811110548 2

最后得到:201811020926 201811110548 2

任何人都对在Ruby中执行此操作没有任何了解?我正在学习用于atm的这种语言,这就是为什么我指定这种语言,但是我还远远不能自己解决此问题!

编辑-还具有python&js的一些其他语言选项的知识。只是真的需要找到一种自动执行此过程的方法,因为每周很快将有超过120个文件需要固定日期格式。

先谢谢了。

1 个答案:

答案 0 :(得分:0)

假设您的文件数据位于名为data.txt的文件中

module DataFixer
  class << self
    def fix(filename)
      data = File.read(filename)
      fixed_data = data.gsub(/(\d{10})\s(\d{10})/, "20\\1\s20\\2")
      File.open(filename, 'w') {|f| f.write fixed_data}
    end
  end
end

DataFixer.fix('data.txt')

现在,您的数据已修复。逻辑是在捕获组上使用正则表达式模式匹配和替换。