원격 SSH에서 awk로 전달된 awk의 특정 열 값 인쇄가 작동하지 않습니다. "\$1"을(를) 시도했습니다.

원격 SSH에서 awk로 전달된 awk의 특정 열 값 인쇄가 작동하지 않습니다. "\$1"을(를) 시도했습니다.
$ /usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf("%d\n", size);}'" 
 Syntax Error The source line is 1.
 The error context is
                {size=$1/1024/1024; >>>  printf(% <<< dn, size);}
 awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.

답변1

큰따옴표 안에 큰따옴표를 이스케이프 처리해야 합니다.

/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf(\"%d\n\", size);}'" 

이 두 awk명령을 하나로 결합할 수 있습니다.

/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{printf(\"%d\n\", \$7/1024/1024);}'" 

awk또 다른 방법은 로컬 컴퓨터에서 명령을 실행하는 것입니다.

/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{print $7}' |awk '{size=$1/1024/1024; printf("%d\n", size);}' 
/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{printf("%d\n", $7/1024/1024);}' 

편집하다:인용하다데이브 톰슨_085의 코멘트

저는 로컬 형식을 선호하지만 원격 형식을 단순화하여 다음과 같이 할 수 있습니다.

ssh u@s "sudo sysdumpdev -e | awk '{print int($ 7/1024/1024)}' "

-- $ 7로컬 쉘에서는 매개변수로 처리되지 않지만 (원격) awk에서는 필드로 처리됩니다.

관련 정보