AWK와 함께 Pandoc 파이프라인 데이터 사용

AWK와 함께 Pandoc 파이프라인 데이터 사용

데이터

ID     | Size      | Blocks
-------|-----------|---------
206  |80760288   | 157744 
207  |80760288   | 157744
328  |241520288  | 471728

AWK 원하는 출력

ID     |BlockSize | Size      | Blocks
-------|----------|-----------|---------
206  | 511.971  |80760288   | 157744 
207  | 511.971  |80760288   | 157744
328  | 511.991  |241520288  | 471728

blockSize크기/청크는 어디에 있나요?

AWK를 사용하여 이 변환을 어떻게 수행할 수 있나요?

답변1

한 가지 방법은 다음과 같습니다.

$ awk -F'|' -vOFS="|" '{
    if(NR==1){print $1," Blocksize ",$2,$3}
    else if(NR==2){print $1,"-----------",$2,$3}
    else{printf "%-7s|%-11s|%-11s|%-11s\n",$1,$2/$3,$2,$3}
}' file
ID     | Blocksize | Size      | Blocks
-------|-----------|-----------|---------
206    |511.971    |80760288   | 157744    
207    |511.971    |80760288   | 157744    
328    |511.991    |241520288  | 471728    

그러나 이는 열 정렬을 유지해야 하기 때문에 불필요하게 복잡해집니다. 실제로는 필요하지 않다고 생각되므로 그냥 사용하고 싶을 수도 있습니다.

$ sed 's/[-|]/ /g;/^ *$/d' file | 
   awk '{if(NR==1){print $1,"Blocksize",$2,$3}else{print $1,$2/$3,$2,$3}}'
ID Blocksize Size Blocks
206 511.971 80760288 157744
207 511.971 80760288 157744
328 511.991 241520288 471728

이는 사용자 친화적이지는 않지만 공백으로 구분된 데이터가 필요한 모든 프로그램에 대한 완벽한 입력입니다.

관련 정보