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

View file

@ -4,10 +4,10 @@ author = "joachimschmidt557"
description = "Basic utilities written in Nim" description = "Basic utilities written in Nim"
license = "Unlicense" license = "Unlicense"
requires "nim >= 0.19.0" requires "nim >= 0.19.4"
requires "cligen >= 0.9.19" requires "cligen >= 0.9.19"
requires "stint >= 0.0.1" requires "stint >= 0.0.1"
bin = @["add", "cat", "cp", "div", "echo", "factor", "false", "head", "mkdir", "mul", "nl", "pwd", "rev", "rm", "seq", "shuf", "sleep", "sub", "tac", "tee", "touch", "true", "wc", "yes"] bin = @["add", "cat", "cp", "div", "echo", "factor", "false", "head", "mkdir", "mul", "nl", "pwd", "rev", "rm", "seq", "shuf", "sleep", "sub", "tail", "tac", "tee", "touch", "true", "wc", "yes"]
binDir = "bin" binDir = "bin"

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))