嘿,我刚开始使用 Linux,我有一个包含 5k 列的大型数据集,所有列的名称都不同,用于比较患者数据。我想从其他组(例如 BC、PR...等)中提取“PC”数据的子集。 PC大约有100名成员,全部被贴上PC****的标签。其中 **** 是案例编号。
数据看起来像这样(尽管分隔符 = ):
ID_REF | BC0010 | BC0011 | PC0023 | PC0013 | PR0007 | PR0053 |
---|---|---|---|---|---|---|
基因1 | 1.177703095 | -1.32116828 | -2.176250582 | -2.079342976 | -1.427146954 | 10.64102737 |
基因2 | 1.177703095 | -1.32116828 | -2.176250582 | -2.079342976 | -1.427146954 | 10.64102737 |
基因3 | 1.177703095 | -1.32116828 | -2.176250582 | -2.079342976 | -1.427146954 | 10.64102737 |
我想要得到的是(再次使用分隔符=):
ID_REF | PC0023 | PC0013 |
---|---|---|
基因1 | -2.176250582 | -2.079342976 |
基因2 | -2.176250582 | -2.079342976 |
基因3 | -2.176250582 | -2.079342976 |
到目前为止我已经尝试过:
$ awk -F/t -v col=*PC 'NR==1{for(i=1;i<=NF;i++){if($i==col){c=i;break}} print $c} NR>1{print $c}' data.txt > pcData.txt
但是由于某种原因,这不会对数据进行子集化,我最终会返回所有列。
我不知道要在 col= 中放入什么???使这项工作成功。
感谢您的帮助!