为“cat”输出着色?

为“cat”输出着色?

我正在尝试练习代码并将我的其他兴趣与其结合起来,我的强烈兴趣是一般的遗传学/科学。我正在制作一个简单的脚本来生成随机字符串,但如果我使用遗传密码(AGCT)的输入,输出cat将根据字母着色(A - 蓝色,G - 绿色,C - 红色,T - 黄色的)。我对此摸不着头脑,我的谷歌搜索不太好。命令的输出(使用遗传密码输入)如下所示:

user@conroe$ random AGCT 128
TTCAGGATCAGGTGGCCGATGCCCGTCACGTAGTGGAGGTATTACGTTTTCATCAATCACACGTTACCCCACTTCCTAGCGACAACGTGTGACTCGATGAATAGGAGCAGCGTCCCGCTCGAGATGAC

这是代码:

RED='\033[0;31m'
NC='\033[0m'
if [ $# == 2 ]
then
    { cat /dev/urandom | env LC_CTYPE=C tr -dc $1 | head -c $2; echo; }
    else
        printf "${RED}error: ${NC}insufficient input\n"
fi

有什么帮助吗?

答案1

您可以通过管道输出< /dev/urandom tr -dc $1 | head -c $2(我冒昧地删除了乌鲁木齐大学以及显然不需要的env LC_CTYPE=Cecho;但是,您可以在您的版本中将它们恢复为一次while读取一个字符的循环,并回显不同的颜色转义序列,后跟基于读取字符的不同字符:

#!/bin/bash

if [ $# == 2 ]
then
    < /dev/urandom tr -dc $1 | head -c $2 | while read -n 1 x
    do
        case $x in
            A)
                echo -ne '\033[0;34mA'
            ;;
            G)
                echo -ne '\033[0;32mG'
            ;;
            C)
                echo -ne '\033[0;31mC'
            ;;
            T)
                echo -ne '\033[0;33mT'
            ;;
        esac
    done
    echo -e '\033[0m'
    exit 0
fi
exit 1

截屏

相关内容