다음과 같은 많은 파일(총 2181개 파일, anacovis2_1_summary_betai_reg.out
~ anacovis2_2181_summary_betai_reg.out
)이 있습니다.
anacovis2_2_summary_betai_reg.out
anacovis2_3_summary_betai_reg.out
anacovis2_4_summary_betai_reg.out
anacovis2_5_summary_betai_reg.out
anacovis2_6_summary_betai_reg.out
anacovis2_7_summary_betai_reg.out
.
.
.
anacovis2_2179_summary_betai_reg.out
anacovis2_2180_summary_betai_reg.out
anacovis2_2181_summary_betai_reg.out
각 파일은 다음과 같습니다.
COVARIABLE MRK M_Pearson SD_Pearson BF(dB) Beta_is SD_Beta_is eBPis
1 1 -0.00974041 0.21914544 -10.86437924 -0.00058189 0.00694111 0.03003007
1 2 0.08603974 0.19711939 -1.27963044 0.00381909 0.00953539 0.16192245
1 3 -0.02912035 0.20260353 -12.60498743 -0.00146066 0.00633105 0.08749265
각 파일(1~2181)을 반복하고 첫 번째 열(COVARIABLE)이 "1"이면 마지막 열만 인쇄하고 별도의 파일에 저장하고 싶습니다(각 파일의 출력을 별도의 문서).
이 작업 awk
이나 다른 제안을 어떻게 할 수 있나요?
답변1
이 작업은 awk
.
awk '($1==1){print $NF>FILENAME"_new"}' anacovis2_{1..2181}_summary_betai_reg.out
첫 번째 열이 1과 같은지 확인한 다음 $1==1
마지막 열을 $NF
FILENAME 형식은 동일하지만 로 끝나는 새 파일에 인쇄하므로 _new
출력 파일은 FILENAME_new
.
우리가 사용하는 모든 2181개 파일을 읽으려면확장된 매개변수를 중괄호로 묶습니다.여기.
답변2
간단한 해결책은 다음과 같습니다.
for((i=1;i<2182;i++)); do
file_in="anacovis2_${i}_summary_betai_reg.out"
file_out="awk_output_${i}"
awk '$1==1 { print $NF }' "$file_in" >"$file_out"
done
더 빠른 솔루션은 2181 대신 하나의 프로세스 awk
만 필요하도록 입력 및 출력 파일을 여는 것입니다 ...awk