2014-10-02 1 views
0

아마도 여기에 간단한 내용이 누락되어 있지만 쉘 스크립팅 전문가는 아닙니다.awk 명령의 별칭 - 너무 많은 따옴표

완벽하게 작동하는 로컬 명령이 있습니다.

tail -f /path/to/file | awk ' 
    /INFO/ {print "\033[32m" $0 "\033[39m"} 
    /ERROR/ {print "\033[31m" $0 "\033[39m"} 
    /WARNING/ {print "\033[33m" $0 "\033[39m"} 
' 

내 상자에 넣고 붙여 넣으면 잘 작동합니다. 이미 두 가지 따옴표를 사용하고 있기 때문에 별칭을 지정할 수 없습니다. 따라서 alias='...'은 작동하지 않습니다.

function tailMyFile { 
    tail -f /path/to/file | awk ' 
    /INFO/ {print "\033[32m" $0 "\033[39m"} 
    /ERROR/ {print "\033[31m" $0 "\033[39m"} 
    /WARNING/ {print "\033[33m" $0 "\033[39m"}'; 
} 

저에게 말한다 : 나는 또한 함수에 그것을 만드는 시도했습니다 -bash: /INFO/: No such file or directory

+2

bash의 오류는 어떤 이유로 든 단일 인용 awk 스크립트에있는 것으로/INFO /가 보이지 않는다는 것을 의미합니다. –

답변

1

은 함수 선언의이 방법으로 시도 : 당신의 오류 인 것처럼 그러나

tailMyFile() { 
    tail -f /path/to/file | awk ' 
    /INFO/ {print "\033[32m" $0 "\033[39m"} 
    /ERROR/ {print "\033[31m" $0 "\033[39m"} 
    /WARNING/ {print "\033[33m" $0 "\033[39m"}'; 
} 

을 것 같습니다 기능 정의 방법과 관련이 없지만/INFO/디렉토리가 제대로 보이는지 여부는 아무런 문제없이 cd /INFO이 될 수 있습니까?

+3

개선 :'/ path/to/file'을'$ 1'로 변경하고 파일 경로를 함수의 인수 (즉,'tailMyFile/path/to/file')로 전달하십시오. 그런 다음이 함수를 하나의 파일이 아닌 모든 파일과 함께 사용할 수 있습니다. – isedev

+0

@Isaac이 예기치 않은 토큰'(''.''function'으로 접두사를 붙이려고했는데 내 원래와 같은 오류를주었습니다.) – diplosaurus

+3

여기있는 스 니펫은 완벽하게 유효한 함수입니다. 쉘은 뭔가 잘못되었다고 싫어합니다. –