我有一個由單個單元1s,2s和3s組成的多列文件。每列中有很多單元重複,有時會從一個單元切換到另一個單元。我想要統計每個列上發生這種切換的次數。例如,在第1列中,開關從1變爲2,從3變爲1,因此有3個開關,輸出應爲3.在第二列中,整列爲2,所以變化爲0,輸出爲0如何在表的每一列上循環awk命令並輸出到單個輸出文件?
我的輸入文件有4000列,所以不可能手工完成。該文件是空格分隔的。
例如:
輸入:
1 2 3 1 2
1 2 2 1 3
1 2 3 1 2
2 2 2 1 2
2 2 2 1 2 ......
3 2 2 1 2
3 2 2 1 1
1 2 2 1 1
1 2 2 1 2
1 2 2 1 1
希望的輸出:
3 ## column 1 switch times
0 ## column 2 switch times
3 .....
0
5
我用:
awk '{print $1}' <inputfile> | uniq | wc -l
awk '{print $2}' <inputfile> | uniq | wc -l
awk '{print $3}' <inputfile> | uniq | wc -l
....
這一次執行一列。它會給我第一列的輸出「4」,稍後我會計算4-1 = 3來獲得我想要的輸出。但是有沒有辦法將這個awk命令寫入一個循環並在每一列上執行並輸出到一個文件?
謝謝!
謝謝喬納森爲您的全面答案!我非常感謝你的幫助! – user1687130