我有一个由单个单元 1s、2s 和 3s 组成的多列文件。每列中有很多重复单元,有时它会从一个单元切换到另一个单元。我想计算在每一列上发生了多少次这种切换。例如在第 1 列中,开关从 1 到 2 到 3 到 1,所以有 3 个开关,输出应该是 3。在第二列中,整列有 2s,所以变化为 0,输出为 0 .
我的输入文件有 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 命令写入一个循环并在每一列上执行它并输出到一个文件?
谢谢!