![awk 값을 가져오고 파일로 출력 [중복]](https://linux55.com/image/149322/awk%20%EA%B0%92%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B3%A0%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%B6%9C%EB%A0%A5%20%5B%EC%A4%91%EB%B3%B5%5D.png)
현재 awk를 사용하고 있는 로그 파일에서 값을 가져와야 합니다. 숫자를 콘솔에 인쇄할 수 있지만 값을 새 파일에 넣으려고 하면 아무 일도 일어나지 않습니다. 이게 내가 가진 거야
sshpass -p $PASSWORD ssh $USERNAME@$REMOTE_IP_ADDR tail -F $INPUT_FILE | awk '{ print $16 }' > $OUTPUT_FILE
//when command is run without > $OUTPUT_FILE i get my value eg 4000
파일에 아무 것도 출력되지 않으므로 이는 버퍼링 문제가 아닙니다. 파일이 생성되었지만 새 파일에 값이 기록되지 않았습니다. 게다가 내가 읽은 줄을 계속 대체하는 다른 스크립트의 줄을 읽고 있기 때문에 내 값은 항상 덮어쓰여집니다.
그래서 제가 가지고 있던 문제를 해결했습니다. 해결책은 명령을 변수에 할당하고 해당 변수를 파일에 쓰는 것입니다. 이전에 이것을 시도한 적이 있지만 문제는 = 기호와 명령 사이에 여분의 공백이 있다는 것입니다. 이것은 작동 코드입니다
value=`sshpass -p $PASSWORD ssh $USERNAME@$REMOTE_IP_ADDR tail -n 1 $INPUT_FILE | awk '{ print $16 }'`
echo $value
echo $value > $OUTPUT_FILE
//will not work because of the space between "value= `sshpass"
// value= `sshpass -p $PASSWORD ssh $USERNAME@$REMOTE_IP_ADDR tail -n 1 $INPUT_FILE | awk '{ print $16 }'`