2017-12-27 12 views
0

나는 시스템에서 같은 문자열을 반환 하나 개의 변수 받고 있어요 : 나는 gsub를 사용하는 tryedAWK 디스플레이 변수

$VARIABLE/dir/text.file 

을하지만, 내가 뭔가 놓치고 :

onstat -c | grep ^MSGPATH | awk 'gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}' 

오류를 반환합니다 :

awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2} 
awk: cmd. line:1:      ^syntax error 
awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2} 
awk: cmd. line:1:         ^0 is invalid as number of arguments for gsub 

무엇이 문제 일 수 있습니까?

+0

onstat -c가 생성하는 출력 중 일부가 있습니까? –

+0

awk 안에 변수 값을 출력 하시겠습니까? 또는 무엇을? –

+0

은 $ INFORMIXDIR/tmp/online.log를 리턴하고 그 값을 사용해야합니다. INFORMIXDIR은 하나의 환경 변수입니다. –

답변

2

awk 본문이 작은 따옴표로 묶여 있기 때문에 셸 변수를 확장 할 수 없습니다. 그것은 ("의 끝을 의미하는 특수 정규식 문자이기 때문에,

... | awk -v dir="$INFORMIXDIR" 'gsub (/\$INFORMIXDIR/, dir) {print $2}' 

참고가 정규 표현식에서 $을 탈출해야 : 안전하게 작업을 수행하는 방법은 -v 옵션 awk가 할 수있는 가치를 전달하는 것입니다 문자열 ")

+0

감사합니다. –