Add tail utility

This commit is contained in:
joachimschmidt557 2019-04-04 20:53:53 +02:00
parent b7e5108379
commit afa9b3682b
2 changed files with 31 additions and 2 deletions

29
tail.nim Normal file
View file

@ -0,0 +1,29 @@
import cligen, os, math, deques
import common
proc main(files:seq[string], lines=10, bytes=0, quiet=false) =
# if files.len == 0:
# files.add "-"
for file in files:
if files.len > 1 and not quiet:
writeLine(stdout, "==> " & (if file == "-": "standard input" else: file) & " <==")
var f = if file == "-": stdin
else: open(file, fmRead)
if bytes > 0:
var q = initDeque[char]()
while not f.endOfFile:
if q.len > bytes:
q.popFirst
q.addLast(f.readChar)
for item in q.items:
write(stdout, item)
elif lines > 0:
var q = initDeque[string]()
for line in lines(f):
if q.len > lines:
q.popFirst
q.addLast line
for line in q.items:
writeLine(stdout, line)
dispatch(main, version=("version", nimbaseVersion))