30 lines
914 B
Plaintext
30 lines
914 B
Plaintext
defmodule RC do
|
|
def remove_lines(filename, start, number) do
|
|
File.open!(filename, [:read], fn file ->
|
|
remove_lines(file, start, number, IO.read(file, :line))
|
|
end)
|
|
end
|
|
|
|
defp remove_lines(_file, 0, 0, :eof), do: :ok
|
|
defp remove_lines(_file, _, _, :eof) do
|
|
IO.puts(:stderr, "Warning: End of file encountered before all lines removed")
|
|
end
|
|
defp remove_lines(file, 0, 0, line) do
|
|
IO.write line
|
|
remove_lines(file, 0, 0, IO.read(file, :line))
|
|
end
|
|
defp remove_lines(file, 0, number, _line) do
|
|
remove_lines(file, 0, number-1, IO.read(file, :line))
|
|
end
|
|
defp remove_lines(file, start, number, line) do
|
|
IO.write line
|
|
remove_lines(file, start-1, number, IO.read(file, :line))
|
|
end
|
|
end
|
|
|
|
[filename, start, number] = System.argv
|
|
IO.puts "before:"
|
|
IO.puts File.read!(filename)
|
|
IO.puts "after:"
|
|
RC.remove_lines(filename, String.to_integer(start), String.to_integer(number)
|