Groups | Search | Server Info | Login | Register
Groups > comp.lang.awk > #10035
| From | Michael Sanders <porkchop@invalid.foo> |
|---|---|
| Newsgroups | comp.lang.awk |
| Subject | Side-by-Side |
| Date | 2025-10-24 14:28 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <10dg2ep$2l1qo$1@dont-email.me> (permalink) |
#!/bin/sh
<<'NOTES'
Prints text blocks side-by-side
Michael Sanders 2025
You have...
A.TXT
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit.
Nullam feugiat, turpis at
pulvinar vulputate, erat libero
tristique tellus, nec bibendum
odio risus sit amet ante.
B.TXT
Aliquam erat volutpat. Nunc
auctor. Mauris pretium quam et
urna. Fusce nibh. Duis risus.
Curabitur sagittis hendrerit
ante. Aliquam erat volutpat.
Vestibulum metus semper nulla.
You want...
Left Side Right Side
Lorem ipsum dolor sit amet, Aliquam erat volutpat. Nunc
consectetuer adipiscing elit. auctor. Mauris pretium quam et
Nullam feugiat, turpis at urna. Fusce nibh. Duis risus.
pulvinar vulputate, erat libero Curabitur sagittis hendrerit
tristique tellus, nec bibendum ante. Aliquam erat volutpat.
odio risus sit amet ante. Vestibulum metus semper nulla.
NOTES
str1="$(cat a.txt)"
str2="$(cat b.txt)"
clear
awk -v gap=3 -v a="$str1" -v b="$str2" '
BEGIN {
# split strings into lines
n1 = split(a, arr1, "\n")
n2 = split(b, arr2, "\n")
n = (n1 > n2 ? n1 : n2)
# determine max width of 1st block
max = 0
for (q = 1; q <= n1; q++) {
if (length(arr1[q]) > max) max = length(arr1[q])
}
# print side-by-side
for(q = 1; q <= n; q++){
s1 = (q <= n1 ? arr1[q] : "")
s2 = (q <= n2 ? arr2[q] : "")
# left-align 1st block with max, add uniform gap, print 2nd block
printf "%-*s", max + gap, s1
printf "%s\n", s2
}
}'
echo
# eof
--
:wq
Mike Sanders
Back to comp.lang.awk | Previous | Next — Next in thread | Find similar
Side-by-Side Michael Sanders <porkchop@invalid.foo> - 2025-10-24 14:28 +0000
Re: Side-by-Side Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2025-10-24 17:19 +0200
Re: Side-by-Side Michael Sanders <porkchop@invalid.foo> - 2025-10-25 00:26 +0000
Re: Side-by-Side Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2025-10-25 03:03 +0200
Re: Side-by-Side Michael Sanders <porkchop@invalid.foo> - 2025-10-26 07:56 +0000
Re: Side-by-Side mack@the-knife.org (Mack The Knife) - 2025-10-25 17:25 +0000
Re: Side-by-Side Michael Sanders <porkchop@invalid.foo> - 2025-10-26 07:50 +0000
csiph-web