!["cat" 출력을 색상화하시겠습니까?](https://linux55.com/image/67134/%22cat%22%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%83%89%EC%83%81%ED%99%94%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
나는 코딩을 연습하고 그것을 나의 다른 관심사와 결합하려고 노력하고 있습니다. 나의 강한 관심사는 일반적으로 유전학/과학입니다. 무작위 문자열을 생성하는 간단한 스크립트를 만들고 있는데 유전 코드(AGCT)를 입력으로 사용하면 cat
문자(A - 파란색, G - 녹색, C - 빨간색, T - 노란색)에 따라 출력 색상이 지정됩니다. ). 이것 때문에 머리를 긁고 있는데 Google 검색 결과가 별로 좋지 않습니다. 명령의 출력(유전자 코드 입력 사용)은 다음과 같습니다.
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=C
. echo
그러나 버전에서 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