Com zsh
e libnumbertext-tools
' spellout
no Debian:
#! /bin/zsh -
colors=(${(f)"$(<log1.txt)"})
adjectives=(${(f)"$(head -n ${#colors} <log2.txt)"})
/usr/lib/libnumbertext/spellout -l /usr/share/libnumbertext/en \
-p ordinal 1-$#colors |
for color adjective in ${colors:^^adjectives}; do
read num &&
print -r The $num color $color is $adjective
done
(note que é em inglês dos EUA. Por exemplo, para 101, você recebe cem em vez de cem e primeiro )
Se você não pode instalar o zsh
ou qualquer software que soletre números, mas tenha uma lista de ordinais ingleses em um terceiro log3.txt
, você poderia fazer na maioria dos shells incluindo bash
(Bourne-like, rc como, peixe, pelo menos):
#! /bin/sh -
awk '
BEGIN {while ((getline a < "log2.txt") > 0) adjective[na++] = a}
{
if ((getline num < "log3.txt") <= 0) num = NR "th"
print "The "num" color "$0" is "adjective[(NR-1)%na]
}' log1.txt
(voltando a <digits>th
se ficarmos sem números em inglês).