2015-11-15 74 views
0

所以我正在制作一个脚本来检查数独是否正确。 任务是检查行和列中的重复数字,现在对于列使用sort和uniq使用awk相当简单。但要检查线是另一回事。因为我不能使用排序和类似的东西,请记住,我的sed知识几乎没有。 输入:在线检查重复值

5 3 4 6 7 8 9 1 2 
6 7 2 1 9 5 3 4 8 
1 3 8 3 4 2 5 6 7 
8 5 9 7 6 1 4 2 3 
4 2 6 8 5 3 7 9 1 
7 1 3 9 2 4 8 5 6 
9 6 1 1 3 7 2 8 4 
2 8 7 4 1 9 6 3 5 
3 4 5 2 8 6 1 7 8 

现在在某些行有重复号码,我想输出告诉像你使用awk检查列

line 1 : good 
line 2 : good 
line 3 : bad 
line 4 : good 
line 5 : good 
line 6 : good 
line 7 : bad 
line 8 : good 
line 9 : bad 
+0

您是否使用文本文件作为输入? –

+0

是的,一个文本文件作为参数 – LostStudent

+1

你看这里:http://stackoverflow.com/questions/13648410/how-can-i-get-unique-values-from-an-array-in-linux-bash? – alnet

回答

0

假设,那每列只是从1号到9,你可以像这样做的检查也awk

{ delete arr; 
    okline = 1; 
    for (i = 1; i <= NF; ++i) { 
    if (arr[$i] == 1) { 
     okline = 0; 
     break; 
    } 
    arr[$i] = 1; 
    } 

    if (okline == 1) 
    { 
    print "Line: OK"; 
    } 
    else 
    { 
    print "Line: error"; 
    } 
} 

它不会计算线条,但您可以明白。