使用 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
。
我想在文本文件的特定位置插入数据,例如从第 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
。