С zsh
и с libnumbertext-tools
с spellout
в 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
(обратите внимание, что это американский -английский язык. Например, за 101 вы получите сто первый вместо сто первый )
.Если вы не можете установить zsh
или какое-либо программное обеспечение, которое расшифровывает числа, но имеет список английских порядковых номеров в третьем log3.txt
файле, вы можете сделать это в большинстве оболочек, включаяbash
(Bourne -, например, rc -типа, рыбу хоть):
#! /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
(вернуться к <digits>th
, если у нас закончатся английские числа ).
Найдите их все с помощью, например,. type -a column
, переставьте ваш $PATH
так, чтобы каталог, содержащий нужную вам версию, находился перед каталогом, содержащим версию, которая вам не нужна. Затем введите команду rehash
.
PATH
редактирование сложно. Никогда не выполняйте задание PATH=
, в котором нет $PATH
, если только вы не уверены в том, что делаете.
Я использую функции bash _path _Стивена Коллиера, описанные в Linux Journal еще в 2000 году:
https://www.linuxjournal.com/article/3645https://www.linuxjournal.com/article/3768https://www.linuxjournal.com/article/3935
Функция addpath
добавляет запись в путь только в том случае, если ее там изначально нет. delpath -n
удаляет из пути все несуществующие -каталоги.
Вы можете получить файл pathfunc.tgz
изhttps://web.archive.org/web/20061210054813/http://www.netspinner.co.uk:80/Downloads/pathfunc.tgz
Is there an obviously correct way to specify which of these similar commands I want to use?
Рискуя быть слишком слишком очевидным, один очевидный способ — указать полный путь к точному исполняемому файлу, который вы хотите использовать в сценарии:
#!/usr/bin/env bash
# use the col executable in /usr/bin, not that other one:
col='/usr/bin/col'
$col.........
Как указывает @muru, альтернативой может быть объявление функции col()
, которая вызывает конкретный двоичный файл, который вы хотите использовать:
#!/usr/bin/env bash
# use the col executable in /usr/bin, not that other one:
col()
{
/usr/bin/col "$@"
}
col.........