Text-Processing
如何根據模式列表拆分文件並將輸出文件命名為模式?
File1 看起來像這樣(代謝途徑:基因):
A: 1
A: 2
A: 3
B: a
B: b
C: pp
D: rr
如何獲得如下所示的輸出文件(命名為 File1.new):
A:1、2、3
B:a、b
C:pp
D:rr
我是 Linux 初學者。最好是簡單的解釋!
使用GNU 數據集
datamash -t: groupby 1 collapse 2 < file A:1,2,3 B:a,b C:pp D:rr
如果你也想要計數,
datamash -t: groupby 1 collapse 2 count 2 < file A:1,2,3:3 B:a,b:2 C:pp:1 D:rr:1
countunique
如果您想要唯一欄位的數量,您也可以。
這是 awk 的工作。
awk -F: '{L[$1]=L[$1] "," $2} END { for (l in L) printf "%s:%s\n",l,substr(L[l],2);}'
在哪裡
-F:
用作:
分隔符{L[$1]=L[$1] "," $2}
儲存由欄位 1 索引的逗號分隔值END
在文件末尾for (l in L)
循環遍歷值printf "%s:%s\n",l,substr(L[l],2);
列印,跳過第一個逗號- 您可以使用
","
or", "
,相應地調整最終 substr。awk 可以是單行的,使用
awk -F: '....' File1 > File3
要計算基因,只需添加一個 var tou 計數(此處為 G)。
{L[$1]=L[$1] "," $2;G[$1]++} END { for (l in L) printf "%s:%s:%d\n",l,substr(L[l],2),G[l];}