grep 명령의 결과를 파일로 저장해야하지만 출력 파일의 형식을 지정하고 터미널에서와 같이 색상을 유지하려고합니다.
그렇게 할 수있는 방법이 있습니까? grep을 일종의 마크 업 언어로 저장할 수 있습니까? 가능하지 않은 경우이 작업을 수행 할 수있는 다른 도구가 있습니까?
터미널에서와 마찬가지로 검색 키워드를 출력 파일에서 두드러지게 만들려고합니다.
grep 명령의 결과를 파일로 저장해야하지만 출력 파일의 형식을 지정하고 터미널에서와 같이 색상을 유지하려고합니다.
그렇게 할 수있는 방법이 있습니까? grep을 일종의 마크 업 언어로 저장할 수 있습니까? 가능하지 않은 경우이 작업을 수행 할 수있는 다른 도구가 있습니까?
터미널에서와 마찬가지로 검색 키워드를 출력 파일에서 두드러지게 만들려고합니다.
답변:
마크 업을 유지하려면 텍스트 파일 이상이 필요합니다. 색상을 유지하기 위해 HTML 출력을 사용합니다.
설치 아하 예에의 "의 변환 ANSI 이스케이프 시퀀스 HTML 코드에 유닉스 터미널을 "
sudo apt-get install aha
그런 다음 grep
(또는 ls
) 출력을 다음과 같이 저장하십시오 .
ls --color=always | aha --black --title 'ls-with-colors' > ls-with-colors.html
옵션 :
--black param to set background as black color
--title param to set the title for HTML page
다음을 통한 파일 확장자의 구문 강조 pygmentize
설치 pygmentize
:
sudo apt-get install python-pygments
그런 다음 이런 종류의 명령을 실행하십시오.
pygmentize file.pl | grep -i --color=always version | aha --black > ls-with-colors.html
pygmentize
다른 경우에는 작동합니다.
출력 파일로 수행하려는 작업에 따라 색상은 일부 특수 문자에서 가져 오기 때문에 일반 텍스트 파일에 색상을 추가 할 수 있습니다. Grep은 파일로 리디렉션 할 때 인쇄하지 않으려는 것이므로 다음과 같이 강제로 설정해야합니다.
grep --color=always "stuff" input.txt > output.txt
이제 파일을 콘솔에 인쇄하면 Bash가 해당 문자를 "이 색상 사용"으로 해석하기 때문에 색상으로 인쇄됩니다.
cat output.txt
그러나와 같은 편집기에서 열면 vim
이상한 문자가 표시됩니다. 예를 들어, 명령을 사용할 때
echo "A sentence. A red sentence. Another sentence." \
| grep --color=always "A red sentence" > output.txt
출력은 내가 사용하여 인쇄 할 때 바로 보이는 cat
내가 그것을 열 때하지만 vim
내가 얻을
A sentence. ^[[01;31m^[[KA red sentence^[[m^[[K. Another sentence.
따라서 편집기를 사용하려면 이것이 원하는 것이 아닐 것입니다.
올바르게 이해했다면 터미널 출력을 텍스트 파일로 저장하고 싶습니까? 그러나 색상으로 서식을 지정하려고합니다. 이 경우 내 아이디어는 다음과 같습니다.
알다시피, grep 출력을 텍스트 파일로 캡처하면 텍스트 파일이기 때문에 형식을 지정할 수 없습니다. 내가 아는 한 쉬운 방법으로는 할 수 없습니다.
그럼에도 불구하고 어떤 종류의 파일이 열려 있는지 텍스트 편집기를 구현하도록 구성된 간단한 해결 방법이 있습니다. 예를 들어, grep 출력에 bash 구성 요소가 있으므로 bash 강조 표시가 작동한다고 가정 해 봅시다 (단지 터미널의 컬러 출력에 표시되는 색상 임). 트릭은 텍스트 출력을 적절한 확장자로 파일에 저장하는 것입니다. 다음과 같은 일을하는 대신 :
ls | grep something > output
당신은 갈 수 있습니다
ls | grep something > output.sh
gedit (또는 괜찮은 텍스트 편집기)는 bash 코드에 대해 이야기하고 있음을 자동으로 인식하고 그에 따라 강조 표시합니다. 출력에 색상을 지정할 필요는 없습니다. 프로그램은 열려있는 코드 유형을 인식하면 자동으로 출력합니다. 다른 형식의 형식으로 작업하는 경우 확장하려는 내용에 맞게 확장 기능을 조정하십시오 (예 :> output.xml,> output.html,> output.py ... etc). 행운을 빕니다! :)
내가 찾은 경우 검색 한 단어를 강조 표시하려고합니다. 다시 말하지만, 일반 텍스트이기 때문에 일반 텍스트 파일에서 수행 할 수 없습니다. 그러나 일부 HTML 코딩 사용과 같은 매우 쉬운 방법으로 형식을 추가 할 수 있습니다. 이것은 출력을 html 코드로 변환하고 html을 해석 할 수있는 프로그램 (libreoffice writer, firefox 및 10000 등)으로 열면 일부 단어가 강조 표시됩니다.
그렇게하려면, 이것이 당신의 grep이고 html로 내보내 졌다고 가정 해 봅시다 :
ls | grep keytext > output.html
이제 출력에서 키 텍스트 를 강조 표시 하려고 합니다. sed 를 사용 하여 다음과 같이 할 수 있습니다 .
sed -i 's/keytext/<font color="red">keytext<\/font>/g' output.html
그리고 violà, 이제 키 텍스트가 빨간색으로 강조 표시됩니다.