dd의 실시간 진행 상황을 처리하는 방법은 무엇입니까?

dd의 실시간 진행 상황을 처리하는 방법은 무엇입니까?

파이프 감지를 통해 dd의 실시간 진행 상황을 처리하려고 합니다. 다음을 수행해야 합니다.

gzcat "$input" | dd bs="$block_size" count="$count" of="$output" 2>&1 | awk '/copied/ {print $1}'
gzcat "$input" | dd status=progress of="$output" 2>&1 | awk '/copied/ {print $1}'

그러나 마지막 줄이 인쇄될 때까지 아무 것도 인쇄하지 않습니다.

나는 개행 문자가 인쇄되지 않기 때문에 이것이라고 생각합니다 dd. 그래서 awk는 표준 입력에서 아무것도 얻지 못합니다.

해결책이 있나요?

답변1

AWK의 레코드 구분 기호를 변경하여 줄 바꿈 대신 캐리지 리턴으로 입력을 분할할 수 있습니다.

gzcat "$input" | dd status=progress of="$output" 2>&1 | awk -v RS='\r' '/copied/ {print $1}'

관련 정보