[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Ruler
From: |
Greg Wooledge |
Subject: |
Re: Ruler |
Date: |
Mon, 14 Dec 2015 08:27:15 -0500 |
User-agent: |
Mutt/1.4.2.3i |
On Fri, Dec 11, 2015 at 08:41:26PM -0700, valkrem wrote:
> Assume I have a file named "test" and has three variables
>
> Id Date length
>
> 123 20150518 2750
> 125 20140324 3500
>
> When I invoke the command -ruler ( or the script name) I will see the
> following
>
> bash$ ruler test
> 1 2 3
> 12345678901234567890
> -----------------------------------
> 123 20150518 2750
> 125 20140324 3500
Your lines don't align, so I took the liberty of formatting the output
the way I saw fit. Here's an alternative to Stephane's solution:
ruler() {
local cols=${COLUMNS:-$(tput cols)}
local i n tmp
if (( ${#_ruler_line1} < cols )); then
n=$(( ${#_ruler_line1} / 10 ))
for ((i=n+1; i*10 <= cols; i++)); do
printf -v tmp %10d "$i"
_ruler_line1+=$tmp
done
fi
while (( ${#_ruler_line2} < cols )); do
_ruler_line2+=1234567890
done
echo "${_ruler_line1:0:cols}"
echo "${_ruler_line2:0:cols}"
cat "$@"
}
It could be done as a script instead of a function, but the function
version keeps _ruler_line1 and _ruler_line2 around as global variables
so it doesn't have to recreate them every time. It simply appends to
them whenever the terminal width increases.
- Ruler, valkrem, 2015/12/12
- Re: Ruler, Stephane Chazelas, 2015/12/12
- Re: Ruler,
Greg Wooledge <=