単一のユニット 1、2、および 3 で構成される複数列ファイルがあります。各列にはユニットの繰り返しがたくさんあり、時々、別のユニットに切り替わります。この切り替えがすべての列で何回発生するかを数えたいと思います。たとえば、列 1 ではスイッチが 1 から 2 から 3 から 1 に変化するため、3 つのスイッチがあり、出力は 3 になるはずです。 .
私の入力ファイルには 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
....
これにより、一度に 1 つの列が実行されます。最初の列の出力「4」が得られます。後で、4-1 = 3 を計算して、目的の出力を取得します。しかし、この awk コマンドをループに書き込んで各列で実行し、1 つのファイルに出力する方法はありますか?
ありがとう!