파이프 감지를 통해 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}'