使用 ruby 在文本文件中写入特定位置

writing in specific position in a text file using ruby

我想在文本文件的特定位置插入数据,例如从第 10 行开始的第 1 行,如何使用 ruby 来实现? 我还想使用 fakker gem 或任何其他可能的方式将虚假数据传递到此文件中。比如发送 phone 号码、姓名、SSN 等

这是一个示例脚本,它接受两个参数并将第一个文件内容的修改副本写入第二个文件:

require 'faker'

input  = File.open(ARGV[0], 'r')

lines = input.readlines
lines[0].gsub!(/^(.{0,10})/, '' + Faker::Base.numerify('###').to_s)

output = File.open(ARGV[1], 'w')
lines.each do |line|
  output.write(line)
end

如果您的输入文件如下所示:

12345678901234567890
          ^^^ fake data

输出可能如下所示:

12345678909451234567890
          ^^^ fake data

由于我在读取输入文件后打开输出文件,所以您可以将相同的文件名作为第一个和第二个参数传递。这并不是将字符串完全插入到文件中,但它已经很接近了。

关键一行是:

lines[0].gsub!(/^(.{0,10})/, '' + Faker::Base.numerify('###').to_s)

它取第一行并替换为一个随机的 3 位整数。如果第一行中的字符少于 10 个,它会将随机数据附加到行尾。如果您不想替换,您可能需要删除正则表达式中范围的开头:

/^(.{10})/

或者做点别的事情if lines[0].length < 10