假设我有一个文件:替换为“NA”重复变量用awk
1 Blue
2 Red
3 Yellow
4 Yellow
5 Yellow
6 Purple
7 Purple
8 Green
而且我想获得以下文件,通过“NA”
1 Blue
2 Red
3 Yellow
4 NA
5 NA
6 Purple
7 NA
8 Green
假设我有一个文件:替换为“NA”重复变量用awk
1 Blue
2 Red
3 Yellow
4 Yellow
5 Yellow
6 Purple
7 Purple
8 Green
而且我想获得以下文件,通过“NA”
1 Blue
2 Red
3 Yellow
4 NA
5 NA
6 Purple
7 NA
8 Green
试试这个 -
$ awk 'a[$2]++{$2="NA"} 1' f
1 Blue
2 Red
3 Yellow
4 NA
5 NA
6 Purple
7 NA
8 Green
awk '{ if ($2 == COLOR) {print $1, "NA"} else {COLOR=$2; print $1, $2 } }'
$ awk '{print $1, ($2==p ? "NA" : $2); p=$2}' file
1 Blue
2 Red
3 Yellow
4 NA
5 NA
6 Purple
7 NA
8 Green
如果“重复”意味着连续重复此命令的工作 – haifzhan
对,这个问题有两种可能的正确解决方案 - 如果重复的值是连续的,如问题所示,@ VipinKumar如果重复的值不连续或者它们是连续的,但你不在乎将所有的$ 2值加载到内存中。很可能Vipin是正确的方法,除非输入文件很大,或者你不想替换断开的重复值。 –