Add tail utility
This commit is contained in:
parent
b7e5108379
commit
afa9b3682b
2 changed files with 31 additions and 2 deletions
|
|
@ -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
29
tail.nim
Normal 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))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue