여러 명령의 출력을 붙여넣는 방법

여러 명령의 출력을 붙여넣는 방법

f1압축이 풀린 두 개의 파일을 다음 과 f2같은 하나의 명령으로 병합하고 싶습니다 .

paste (zcat f1.gz) (zcat f2.gz). 

올바른 구문은 무엇입니까?

답변1

거기쯤...

paste <(zcat f1.gz) <(zcat f2.gz)

답변2

훌륭한 답변: 정말 감사합니다.

저는 이를 사용하여 세 개의 열을 각각 압축 파일에 붙여넣었습니다.

공유용: 3200개의 Redhat 머신 소스, 매일 약 2억 5천만 포인트...

이는 모든 파일을 로컬에서 가져오는 정확한 방법은 아니지만 ansible실제 작업에서 사용하는 아이디어를 캡처합니다.

for i in $(cat list_of_hostnames.txt)
do
 sadf -U -- -A <file from yesterday> | pigz -9 > host_date_file.tsv.gz
done

작업 디렉터리에 이러한 파일이 모두 있다고 가정합니다.

pigz -cd *.tsv.gz| sed -E 's/\t/\n/g' | split --numeric-suffixes=1 -nr/6 - kk.

이 명령을 실행하면 값의 호스트 이름, 간격, 에포크, 장치, 메트릭 및 타임스탬프(초) kk.01에 해당하는 6개의 압축 파일을 얻게 됩니다 .kk.06

공간을 절약하기 위해:

rm kk.02

(타임스탬프가 있는 간격은 필요하지 않습니다.) 그런 다음

pigz -9 kk.0[13456]

이제 이것은 다음을 사용할 때입니다.

paste <(zcat kk.05.gz ) <(zcat kk.01.gz) <(zcat kk.04.gz) <(zcat kk.06.gz) | grep '%idle' | pigz -9 > metric_host_device_value.tsv.gz  

관련 정보