ssh를 통해 원격 서버에 전달하는 복잡한 명령이 있습니다. 파일을 압축 해제하고 두 번째 ssh 명령에서 이름 지정 구조와 확장명을 변경하려고합니다. 내가이 명령은 다음과 같습니다 분명히bash에서 인용 부호를 이스케이프 처리 (임베디드 awk)
ssh [email protected] "gzip -d /tmp/file.out-20171119.gz; echo file* | awk -F'[.-]' '{print $1$3".log"}'"
은 "인쇄 문의 .LOG 부분 주위에 나를 생각 나는 파일 이름에서이 .out 부분을 제거하고 file20171119.log로 끝날 것입니다 실패. 결과적으로 문법에 대해 혼란 스럽거나 bash가 .log를 적절하게 해석하도록 구문에서 혼란스러워합니다.
아카이브를 확장해야합니까? 당신이하고있는 모든 작업이 파일 이름을 가지고 작업한다면, 'bash' 매개 변수 확장으로 처리 할 수 있습니다. 'f =/tmp/file.out-20171119.gz'이면'g = $ {f/.out- /}; g = $ {g #/tmp /}; g = $ {g/%. gz/.log}'해야합니다. – chepner
아카이브에 .out 파일이 있습니다. 그것이 내가 기본적으로 이름을 바꾸려고하는 파일입니다. 여전히 적용될 수 있습니까? –
같은 접근 방식입니다. 물론'f'의 값이 다르면 할당 된 값을'g'에 사용했던 정확한 패턴을 조정해야 할 수도 있습니다. – chepner