내 게놈 스캔의 결과인 많은 파일(3300)이 있습니다. anacovis2_1_summary_betai_reg.out ... anacovis2_3300_summary_betai_reg.out
각 파일은 다음과 같습니다(처음 몇 줄).
1 4996 0.03907811 0.19369659 -10.43580084 0.00150707 0.00836902 0.06697258
1 4997 0.06213154 0.17373333 -10.98540609 0.00213014 0.00556877 0.15361369
1 4998 -0.00284978 0.19418451 -8.81547738 0.00016505 0.00741737 0.00777931
1 4999 -0.02047544 0.19574268 -9.12692867 -0.00059062 0.00632552 0.03357265
1 5000 -0.01769435 0.18560835 -13.15854481 -0.00038595 0.00540918 0.02543350
2 1 0.04259550 0.20256840 -10.98339784 0.00120126 0.00529516 0.08590396
2 2 -0.10782050 0.17555969 -9.13783036 -0.00355861 0.00689091 0.21784244
2 3 0.02548854 0.18571440 -15.42307129 0.00006131 0.00291038 0.00736142
2 4 0.03084782 0.17813247 -11.99911720 0.00109688 0.00630034 0.06459986
첫 번째 열은 1부터 26까지의 환경 변수입니다. 각 파일을 반복하고 각 환경 변수의 네 번째 열만 추출하여 환경 변수 번호가 접미사로 붙은 파일에 저장하고 싶습니다.
각 환경 변수(예: 변수 1)에 대해 개별적으로 이 작업을 수행하는 방법을 알고 있습니다.
awk '($1==1){print $4>FILENAME"_env1"}'anacovis2_{1..3300}_summary_betai_reg.out
또는 변수 2의 경우
awk '($1==2){print $4>FILENAME"_env2"}'anacovis2_{1..3300}_summary_betai_reg.out
하지만 이 작업에 시간이 걸리기를 원한다면 루프에서 더 빠르게 수행할 수 있는지 알고 싶습니다. 나는 이런 것을 시도했다
for i in {1..26};
do awk '($1==i){print $4>FILENAME"_i"}'anacovis2_{1..3300}_summary_betai_reg.out
done
그러나 그것은 소용이 없습니다! 누구든지 이 문제를 해결하도록 도와줄 수 있나요? 감사해요
답변1
바로 여기에. 이런 식으로만 자체적으로 작동합니다 awk
.
awk '{print $4>FILENAME"_env"$1}' anacovis2_{1..3300}_summary_betai_reg.out
모두 저장 환경모든 파일에서 env1, env2 등과 같은 동일한 파일로 드래그 앤 드롭 FILENAME
하고 {print $4>"env"$1}
.