다음과 같은 테이블이 있습니다.
Genes Category
1. Gene1 dark_11
2. Gene1 dark_9
3. Gene2 dark_7
4. Gene1 dark_5
Category
동일한 행 이름을 가진 열에서 쉼표로 구분된 값을 병합하여 Genes
다음과 같은 출력을 얻고 싶습니다 .
Genes Category
1. Gene1 dark_11, dark_9, dark_5
2. Gene2 dark_7
어떤 도움이라도 대단히 감사하겠습니다.
답변1
awk 배열을 사용하여 충족하려는 조건별로 색인을 생성한 다음 각 관련 범주를 배열의 각 값에 추가할 수 있습니다. 예를 들면 다음과 같습니다.
awk 'NR==1 {print $0}; NR>1 {if(cat[$2])cat[$2]=cat[$2]", "$3; else cat[$2]=$3;}; END{j=1; for (i in cat) print j++".", i, cat[i]}' test.txt
test.txt
입력 파일 입니다 .
배열 cat
에는 두 개의 값이 포함되며, cat[GeneX]
여기에는 각 유전자가 연결된 범주가 포함된 문자열이 포함됩니다. 배열의 올바른 값에 카테고리를 추가하기 전에 배열이 비어 있는지 확인해야 하며, 카테고리 사이에 쉼표를 추가하면 됩니다.