2015-11-15 72 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"; 
    } 
} 

它不會計算線條,但您可以明白。