입력( ) 또는 출력( ) >>>
이라는 서명된 방향으로 I/O 데이터를 출력하는 스크립트가 있습니다 .<<<
<<<
>>>
<timestamp> >>>>>>>>>>
loads
of
output
<timestamp> <<<<<<<<<<
loads
of
input
이 출력을 가져와서 입력을 한 색상으로 색칠하고 출력을 다른 색상으로 색칠하고 싶습니다. git diff
파일 버전의 색상 차이와 비슷합니다.
최소한의 입력(바람직하게는 한 줄)으로 이 작업을 수행하려면 어떻게 해야 합니까?
답변1
아마도 다음과 같은 것이 awk
당신에게 도움이 될 것입니다:
awk 'BEGIN{ce="\033[0m"}
/>>>/{cs="\033[1;31m"}
/<<</{cs="\033[1;32m"}
{print cs$0ce}' your.data
그건:
BEGIN {
ce = "\033[0m"
}
/>>>/ {
cs = "\033[1;31m"
}
/<<</ {
cs = "\033[1;32m"
}
{
print cs $0 ce
}
답변2
전체 쉘, 터미널 독립적, 의미론적 솔루션을 위해, tput
인식하는 모든 터미널에 대한 올바른 색상 변경 순서를 제공하기 위해 terminfo 데이터베이스를 사용하여 색상 처리를 활용하는 또 다른 방법이 있습니다.
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
off=$(tput sgr0)
echo ${red}some red text${blue} some blue text${green} and green${off} and back to normal.