bzip2 -v에서 일부 정보를 어떻게 추출할 수 있나요?

bzip2 -v에서 일부 정보를 어떻게 추출할 수 있나요?

index.html이라는 파일이 있고 이를 압축하여 압축된 크기를 표시하려고 한다고 가정해 보겠습니다. 알았어 내가 할게...

bzip2 index.html -v

이제 모든 데이터 비트/바이트, 압축 비율, 입력 및 출력 압축이 제공됩니다. 내가 숫자(내 경우에는 20)를 원한다고 가정해 보겠습니다. 글쎄, 이것이 내가 시도한 것이고 다른 경우에는 gzip과 작동하며 문제가 없습니다.

그래서 일반적으로 awk이렇게 사용합니다(하지만 작동하지 않습니다).

bzip2 index.html -v | awk '{print $4}'

나도 시도했다

bzip2 index.html -v | cut -f4

위의 시도는 -v가 제공하는 것만 생성하며, 내가 원하는 정보만 추출하지는 않습니다. 다음은 압축된 index.html 파일의 샘플 출력입니다.

bzip2 index.html -v
index.html: 0.346:1, 22.00 bits/bytes, -175.00% saved, 20 in, 55 out

저는 "20 in", 더 구체적으로 숫자 20을 입력하려고 합니다.

답변1

bzip2이 정보를 stderr에 인쇄하세요. 이는 표준 출력을 사용하거나 압축을 풀 때 오류 메시지가 압축이 풀린 데이터와 bzip2 -dc혼합 되는 것을 방지합니다 bzcat. awk에 stderr을 보내야 합니다.

내 bzip2는 이 형식을 생성합니다.

$ bzip2 index.html -v
  index.html:  1.444:1,  5.542 bits/byte, 30.73% saved, 179 in, 124 out.

stderr를 stdout으로 리디렉션하고 awk를 사용하여 압축 정도를 선택합니다.

$ bzip2 index.html -v 2>&1 | awk '{print $5}'
30.73%

쉘에서는 표준 입력, 표준 출력, 표준 오류가 0있습니다 . 표준 오류( )를 가져와 표준 출력( )으로 보내도록 쉘에 지시합니다 .122<&121

관련 정보