여러 파일에서 tsv 파일을 만드는 방법은 무엇입니까?
여러 다른 파일에서 tsv 파일을 만들 수 있기를 원합니다. 샘플은 데이터가 포함된 5개의 "영역" 파일과 연결되어 있습니다. 예를 들어, 샘플1의 파일은 1_region1.cov, 1_region2.cov, 1_region3.cov, 1_region4.cov 1_region5.cov입니다. 여기서 1_region은엑스.cov는 TSV입니다.머리글. 저는 "평균 깊이"라는 제목 아래의 데이터에 관심이 있습니다. 1_region1 값을 가져와서 Region1 헤더 아래의 내 tsv 파일에 추가하고 싶습니다. 13개의 샘플이 있고 각각 5개의 영역 파일이 있으므로 총 65개의 .cov 파일이 있습니다.
내 출력의 예는 다음과 같습니다
견본 | 지역 1 | 지역 2 | 지역 3 | 지역 4 | 지역 5 |
---|---|---|---|---|---|
1 | 45 | 32 | 33 | 28 | 15 |
2 | 30 | 25 | 스물 둘 | 60 | 105 |
삼 | 44 | 50 | 스물 둘 | 55 | 77 |
... | ... | ... | ... | ... | |
13 | 2 | 삼 | 50 | 45 | 66 |
이 경우 숫자는 방금 구성되었습니다.
이것은 나의 현재 시도입니다:
## Sample array
samples=()
for i in {1..13};do samples+=($i); done
## Regions array
regions=(region1 region2 region3 region4 region5)
## I make some variables to store data
arr=()
CountData=()
CountIndex=0
SampleIndex=0
x=''
delim=':'
## I loop through my samples array to collect CountData from the .cov files. I know the naming convention of these files and follow it.
for ((i=0; i<${#samples[@]}; i++)); do
for j in ${regions[@]};do CountData+=($(awk '{ for(k=1;k<=NF;k++){if($k == "meandepth"){getline; print $k} } }' ${samples[$i]}_${j}.cov)); done
done
## I loop through my CountData array to collect the tuples and store them into an array
for n in $(seq 0 $((${#CountData[@]} - 1))); do
count=$((CountIndex + 1))
samplename=${samples[$SampleIndex]}
if [ $((count % 6)) -eq 0 ];then
arr+=($samplename$x) && CountIndex=$((CountIndex + 1)) && x='' && \
SampleIndex=$((SampleIndex + 1))
else
x=$x$delim${CountData[$CountIndex]}
CountIndex=$((CountIndex + 1))
fi
done
# I loop through my array and output the tuples as a tsv
for i in ${arr[@]}; do echo $i | sed 's/:/\t/g' >> output.tsv; done
# I add the header in after
sed -i "1iSample\tRegion1\tRegion2\tRegion3\tRegion4\tRegion5
내 시도는 두 개의 인덱스를 사용하여 배열을 반복합니다. 이는 샘플 1과 관련된 모든 파일을 동일한 줄에 가져오려는 시도이지만 첫 번째 샘플 이후에는 숫자가 더 이상 파일에 있는 것과 일치하지 않습니다. 즉, Sample2 Region1은 30 대신 15를 보고합니다. 실제로 이 스크립트는 처음 11개 샘플만 반복할 수 있습니다. 이는 아마도 조건에서 모듈로 6을 사용하고 있기 때문일 것입니다.
Sample1과 연결된 5개 파일 각각이 Sample1과 같은 줄에 있도록 여러 파일에서 tsv 파일을 만들려면 어떻게 해야 합니까?
감사해요.