Remove lines from a file: Difference between revisions

added ocaml
(added ocaml)
Line 143:
fp:close()
end</lang>
 
=={{header|OCaml}}==
 
<lang ocaml>let input_line_opt ic =
try Some (input_line ic)
with End_of_file -> None
 
let delete_lines filename start skip =
if start < 1 || skip < 1 then
invalid_arg "delete_lines";
let tmp_file = filename ^ ".tmp" in
let ic = open_in filename
and oc = open_out tmp_file in
let until = start + skip - 1 in
let rec aux i =
match input_line_opt ic with
| Some line ->
if i < start || i > until
then (output_string oc line; output_char oc '\n');
aux (succ i)
| None ->
close_in ic;
close_out oc;
Sys.remove filename;
Sys.rename tmp_file filename
in
aux 1
 
let usage () =
Printf.printf "Usage:\n%s <filename> <startline> <skipnumber>\n" Sys.argv.(0);
exit 0
 
let () =
if Array.length Sys.argv < 4 then usage ();
delete_lines
Sys.argv.(1) (int_of_string Sys.argv.(2)) (int_of_string Sys.argv.(3))</lang>
 
<pre>$ cal > cal.txt
$ cat cal.txt
juillet 2011
lu ma me je ve sa di
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
$ ocaml deleteLines.ml cal.txt 5 2
$ cat cal.txt
juillet 2011
lu ma me je ve sa di
1 2 3
4 5 6 7 8 9 10
25 26 27 28 29 30 31
</pre>
 
=={{header|Perl}}==
Line 172 ⟶ 228:
 
deletelines( \@ARGV ) ;</lang>
 
 
 
=={{header|Tcl}}==