希望打印以递增计数,然后打印第1列中的唯一值的计数第2列&第3列...列NF和列$ 0 和如果单词仅出现在第1列的一次,则想要将备注打印为“否”作为重复标记 ,并且如果该单词出现多于第1列的一次,则打算将重复打印为“是”的备注标志awk打印每列中唯一值出现的增量计数
看起来像这样
awk -F"," '{OFS=","; if (word == $1) { counter++ } else { counter = 1; word = $1 }; print $0 ",", "Yes/No", counter }'
例如,我试图检查字段$ 1(水果名称)中是否有任何重复的信息。 在Name字段下,“Apple”出现三次,“Orange”出现两次,“Mango”出现一次。 因此,如果任何单词不重复超过一次consieder为“Name_Dup =否”重复和出现的计数是“Name_Counter = 1”(即芒果)
其中“Apple”出现3次,所以它是当出现第一次计数时,重复/重复的标记为“是”,其为“Name_Dup =是”且Name_Counter = 1“, 当它第二次出现时”Name_Dup =是“ = Yes”和Name_Counter = 3
然后需要检查每个列$ 2,$ 3 ...直到$ NF与$ 0 ..
我的实际输入文件没有排序的任意顺序,没有以前是场像10个字段一样变化, 12个字段和15个字段等
Input.csv
Name,Amount,Dept
Apple,10,eee
Orange,20,csc
Apple,30,mec
Mango,40,sss
Apple,10,eee
Orange,10,csc
所需的输出
Name,Amount,Dept,Name_Dup,Name_Counter,Amount_Dup,Amount_Counter,Dept_Dup,Dept_Counter,EntireLine_Dup,EntireLine_Counter
Apple,10,eee,Yes,1,Yes,1,Yes,1,Yes,1
Orange,20,csc,Yes,1,No,1,Yes,1,No,1
Apple,30,mec,Yes,2,No,1,No,1,No,1
Mango,40,sss,No,1,No,1,No,1,No,1
Apple,10,eee,Yes,3,Yes,2,Yes,2,Yes,2
Orange,10,csc,Yes,2,Yes,3,Yes,2,No,1
例如,请参考以下参考步骤。
步骤#1 - 1场$检查和输出
Name,Name_Dup,Name_Counter
Apple,Yes,1
Orange,Yes,1
Apple,Yes,2
Mango,No,1
Apple,Yes,3
Orange,Yes,2
步骤#2 - 字段$ 2个校验和输出
Amount,Amount_Dup,Amount_Counter
10,Yes,1
20,No,1
30,No,1
40,No,1
10,Yes,2
10,Yes,3
步骤#3 - 字段$ 3检查和输出
Dept,Dept_Dup,Dept_Counter
eee,Yes,1
csc,Yes,1
mec,No,1
sss,No,1
eee,Yes,2
csc,Yes,2
步骤#4场$ 0检查,$ 1 & $ 2 & $ 3人组合和输出
"Name,Amount,Dept",EntireLine_Dup,EntireLine_Counter
"Apple,10,eee",Yes,1
"Orange,20,csc",No,1
"Apple,30,mec",No,1
"Mango,40,sss",No,1
"Apple,10,eee",Yes,2
"Orange,10,csc",No,1
一点也不清楚,能否请您添加关于您的预期输出的更多解释,因为在Input_file中,即使他们的计数超过1,字段也很少有NO。 – RavinderSingh13
RavinderSingh13,我已经添加了步骤#1到步骤#4,请检查并让我们知道您是否需要任何其他详细信息 – VNA
对不起,说但不清楚,我们可以有条件,当你需要的时候,当你需要1等等请等这里呢? – RavinderSingh13